int wl1271_init_pta(struct wl1271 *wl) { int ret; ret = wl1271_acx_sg_cfg(wl); if (ret < 0) return ret; ret = wl1271_acx_sg_enable(wl, wl->sg_enabled); if (ret < 0) return ret; return 0; }
int wl1271_init_pta(struct wl1271 *wl) { int ret; if (wl->bss_type == BSS_TYPE_AP_BSS) ret = wl1271_acx_ap_sg_cfg(wl); else ret = wl1271_acx_sta_sg_cfg(wl); if (ret < 0) return ret; ret = wl1271_acx_sg_enable(wl, wl->sg_enabled); if (ret < 0) return ret; return 0; }
static ssize_t wl1271_sysfs_store_bt_coex_state(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct wl1271 *wl = dev_get_drvdata(dev); unsigned long res; int ret; ret = kstrtoul(buf, 10, &res); if (ret < 0) { wl1271_warning("incorrect value written to bt_coex_mode"); return count; } mutex_lock(&wl->mutex); res = !!res; if (res == wl->sg_enabled) goto out; wl->sg_enabled = res; if (unlikely(wl->state != WLCORE_STATE_ON)) goto out; ret = wl1271_ps_elp_wakeup(wl); if (ret < 0) goto out; wl1271_acx_sg_enable(wl, wl->sg_enabled); wl1271_ps_elp_sleep(wl); out: mutex_unlock(&wl->mutex); return count; }