|
@@ -843,6 +843,8 @@ static inline int drv_add_chanctx(struct ieee80211_local *local,
|
|
{
|
|
{
|
|
int ret = -EOPNOTSUPP;
|
|
int ret = -EOPNOTSUPP;
|
|
|
|
|
|
|
|
+ might_sleep();
|
|
|
|
+
|
|
trace_drv_add_chanctx(local, ctx);
|
|
trace_drv_add_chanctx(local, ctx);
|
|
if (local->ops->add_chanctx)
|
|
if (local->ops->add_chanctx)
|
|
ret = local->ops->add_chanctx(&local->hw, &ctx->conf);
|
|
ret = local->ops->add_chanctx(&local->hw, &ctx->conf);
|
|
@@ -856,6 +858,8 @@ static inline int drv_add_chanctx(struct ieee80211_local *local,
|
|
static inline void drv_remove_chanctx(struct ieee80211_local *local,
|
|
static inline void drv_remove_chanctx(struct ieee80211_local *local,
|
|
struct ieee80211_chanctx *ctx)
|
|
struct ieee80211_chanctx *ctx)
|
|
{
|
|
{
|
|
|
|
+ might_sleep();
|
|
|
|
+
|
|
if (WARN_ON(!ctx->driver_present))
|
|
if (WARN_ON(!ctx->driver_present))
|
|
return;
|
|
return;
|
|
|
|
|
|
@@ -870,6 +874,8 @@ static inline void drv_change_chanctx(struct ieee80211_local *local,
|
|
struct ieee80211_chanctx *ctx,
|
|
struct ieee80211_chanctx *ctx,
|
|
u32 changed)
|
|
u32 changed)
|
|
{
|
|
{
|
|
|
|
+ might_sleep();
|
|
|
|
+
|
|
trace_drv_change_chanctx(local, ctx, changed);
|
|
trace_drv_change_chanctx(local, ctx, changed);
|
|
if (local->ops->change_chanctx) {
|
|
if (local->ops->change_chanctx) {
|
|
WARN_ON_ONCE(!ctx->driver_present);
|
|
WARN_ON_ONCE(!ctx->driver_present);
|
|
@@ -903,6 +909,8 @@ static inline void drv_unassign_vif_chanctx(struct ieee80211_local *local,
|
|
struct ieee80211_sub_if_data *sdata,
|
|
struct ieee80211_sub_if_data *sdata,
|
|
struct ieee80211_chanctx *ctx)
|
|
struct ieee80211_chanctx *ctx)
|
|
{
|
|
{
|
|
|
|
+ might_sleep();
|
|
|
|
+
|
|
if (!check_sdata_in_driver(sdata))
|
|
if (!check_sdata_in_driver(sdata))
|
|
return;
|
|
return;
|
|
|
|
|
|
@@ -925,6 +933,8 @@ static inline int drv_start_ap(struct ieee80211_local *local,
|
|
{
|
|
{
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
|
|
+ might_sleep();
|
|
|
|
+
|
|
if (!check_sdata_in_driver(sdata))
|
|
if (!check_sdata_in_driver(sdata))
|
|
return -EIO;
|
|
return -EIO;
|
|
|
|
|