qtnfmac: pass VIF info to SendChannel command

Do not assume whether wireless device can or can not handle switching
several interfaces on a single radio to different channels. Device will
handle it itself and will return appropriate error code.

Signed-off-by: Igor Mitsyanko <igor.mitsyanko.os@quantenna.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Igor Mitsyanko 2017-09-21 14:34:34 -07:00 committed by Kalle Valo
parent 3656ab0fef
commit 8c015b9067
3 changed files with 5 additions and 4 deletions

View file

@ -846,7 +846,7 @@ static int qtnf_channel_switch(struct wiphy *wiphy, struct net_device *dev,
return -EINVAL; return -EINVAL;
} }
ret = qtnf_cmd_send_chan_switch(mac, params); ret = qtnf_cmd_send_chan_switch(vif, params);
if (ret) if (ret)
pr_warn("%s: failed to switch to channel (%u)\n", pr_warn("%s: failed to switch to channel (%u)\n",
dev->name, params->chandef.chan->hw_value); dev->name, params->chandef.chan->hw_value);

View file

@ -2306,15 +2306,16 @@ out:
return ret; return ret;
} }
int qtnf_cmd_send_chan_switch(struct qtnf_wmac *mac, int qtnf_cmd_send_chan_switch(struct qtnf_vif *vif,
struct cfg80211_csa_settings *params) struct cfg80211_csa_settings *params)
{ {
struct qtnf_wmac *mac = vif->mac;
struct qlink_cmd_chan_switch *cmd; struct qlink_cmd_chan_switch *cmd;
struct sk_buff *cmd_skb; struct sk_buff *cmd_skb;
u16 res_code = QLINK_CMD_RESULT_OK; u16 res_code = QLINK_CMD_RESULT_OK;
int ret; int ret;
cmd_skb = qtnf_cmd_alloc_new_cmdskb(mac->macid, 0x0, cmd_skb = qtnf_cmd_alloc_new_cmdskb(mac->macid, vif->vifid,
QLINK_CMD_CHAN_SWITCH, QLINK_CMD_CHAN_SWITCH,
sizeof(*cmd)); sizeof(*cmd));

View file

@ -73,7 +73,7 @@ int qtnf_cmd_send_updown_intf(struct qtnf_vif *vif,
int qtnf_cmd_reg_notify(struct qtnf_bus *bus, struct regulatory_request *req); int qtnf_cmd_reg_notify(struct qtnf_bus *bus, struct regulatory_request *req);
int qtnf_cmd_get_chan_stats(struct qtnf_wmac *mac, u16 channel, int qtnf_cmd_get_chan_stats(struct qtnf_wmac *mac, u16 channel,
struct qtnf_chan_stats *stats); struct qtnf_chan_stats *stats);
int qtnf_cmd_send_chan_switch(struct qtnf_wmac *mac, int qtnf_cmd_send_chan_switch(struct qtnf_vif *vif,
struct cfg80211_csa_settings *params); struct cfg80211_csa_settings *params);
int qtnf_cmd_get_channel(struct qtnf_vif *vif, struct cfg80211_chan_def *chdef); int qtnf_cmd_get_channel(struct qtnf_vif *vif, struct cfg80211_chan_def *chdef);