mirror of https://gitee.com/openkylin/linux.git
wlcore: add RX filters driver state mgmt functions
More prep work to support wowlan wakeup patterns. Added some wrappers that also keep the current filters state updated in the driver. Signed-off-by: Eyal Shapira <eyal@wizery.com> Signed-off-by: Luciano Coelho <coelho@ti.com>
This commit is contained in:
parent
c21eebb503
commit
dbe0a8cdb2
|
@ -278,3 +278,39 @@ void wl12xx_rx(struct wl1271 *wl, struct wl_fw_status *status)
|
|||
|
||||
wl12xx_rearm_rx_streaming(wl, active_hlids);
|
||||
}
|
||||
|
||||
int wl1271_rx_filter_enable(struct wl1271 *wl,
|
||||
int index, bool enable,
|
||||
struct wl12xx_rx_filter *filter)
|
||||
{
|
||||
int ret;
|
||||
|
||||
if (wl->rx_filter_enabled[index] == enable) {
|
||||
wl1271_warning("Request to enable an already "
|
||||
"enabled rx filter %d", index);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = wl1271_acx_set_rx_filter(wl, index, enable, filter);
|
||||
|
||||
if (ret) {
|
||||
wl1271_error("Failed to %s rx data filter %d (err=%d)",
|
||||
enable ? "enable" : "disable", index, ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
wl->rx_filter_enabled[index] = enable;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
void wl1271_rx_filter_clear_all(struct wl1271 *wl)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < WL1271_MAX_RX_FILTERS; i++) {
|
||||
if (!wl->rx_filter_enabled[i])
|
||||
continue;
|
||||
wl1271_rx_filter_enable(wl, i, 0, NULL);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -138,5 +138,9 @@ struct wl1271_rx_descriptor {
|
|||
|
||||
void wl12xx_rx(struct wl1271 *wl, struct wl_fw_status *status);
|
||||
u8 wl1271_rate_to_idx(int rate, enum ieee80211_band band);
|
||||
int wl1271_rx_filter_enable(struct wl1271 *wl,
|
||||
int index, bool enable,
|
||||
struct wl12xx_rx_filter *filter);
|
||||
void wl1271_rx_filter_clear_all(struct wl1271 *wl);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -349,6 +349,9 @@ struct wl1271 {
|
|||
|
||||
/* size of the private FW status data */
|
||||
size_t fw_status_priv_len;
|
||||
|
||||
/* RX Data filter rule state - enabled/disabled */
|
||||
bool rx_filter_enabled[WL1271_MAX_RX_FILTERS];
|
||||
};
|
||||
|
||||
int __devinit wlcore_probe(struct wl1271 *wl, struct platform_device *pdev);
|
||||
|
|
Loading…
Reference in New Issue