ath10k: make peer type configurable
Peer type was hardcoded to default value. For future implementation it is required to make is configurable. Signed-off-by: Marek Puzyniak <marek.puzyniak@tieto.com> Signed-off-by: Marek Kwaczynski <marek.kwaczynski@tieto.com> Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
This commit is contained in:
parent
d740d8fd24
commit
7390ed3467
@ -429,7 +429,8 @@ static u8 ath10k_parse_mpdudensity(u8 mpdudensity)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ath10k_peer_create(struct ath10k *ar, u32 vdev_id, const u8 *addr)
|
static int ath10k_peer_create(struct ath10k *ar, u32 vdev_id, const u8 *addr,
|
||||||
|
enum wmi_peer_type peer_type)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
@ -438,7 +439,7 @@ static int ath10k_peer_create(struct ath10k *ar, u32 vdev_id, const u8 *addr)
|
|||||||
if (ar->num_peers >= ar->max_num_peers)
|
if (ar->num_peers >= ar->max_num_peers)
|
||||||
return -ENOBUFS;
|
return -ENOBUFS;
|
||||||
|
|
||||||
ret = ath10k_wmi_peer_create(ar, vdev_id, addr);
|
ret = ath10k_wmi_peer_create(ar, vdev_id, addr, peer_type);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath10k_warn(ar, "failed to create wmi peer %pM on vdev %i: %i\n",
|
ath10k_warn(ar, "failed to create wmi peer %pM on vdev %i: %i\n",
|
||||||
addr, vdev_id, ret);
|
addr, vdev_id, ret);
|
||||||
@ -1291,7 +1292,8 @@ static void ath10k_control_ibss(struct ath10k_vif *arvif,
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ath10k_peer_create(arvif->ar, arvif->vdev_id, self_peer);
|
ret = ath10k_peer_create(arvif->ar, arvif->vdev_id, self_peer,
|
||||||
|
WMI_PEER_TYPE_DEFAULT);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath10k_warn(ar, "failed to create IBSS self peer %pM for vdev %d: %d\n",
|
ath10k_warn(ar, "failed to create IBSS self peer %pM for vdev %d: %d\n",
|
||||||
self_peer, arvif->vdev_id, ret);
|
self_peer, arvif->vdev_id, ret);
|
||||||
@ -2756,7 +2758,8 @@ void ath10k_offchan_tx_work(struct work_struct *work)
|
|||||||
peer_addr, vdev_id);
|
peer_addr, vdev_id);
|
||||||
|
|
||||||
if (!peer) {
|
if (!peer) {
|
||||||
ret = ath10k_peer_create(ar, vdev_id, peer_addr);
|
ret = ath10k_peer_create(ar, vdev_id, peer_addr,
|
||||||
|
WMI_PEER_TYPE_DEFAULT);
|
||||||
if (ret)
|
if (ret)
|
||||||
ath10k_warn(ar, "failed to create peer %pM on vdev %d: %d\n",
|
ath10k_warn(ar, "failed to create peer %pM on vdev %d: %d\n",
|
||||||
peer_addr, vdev_id, ret);
|
peer_addr, vdev_id, ret);
|
||||||
@ -3675,7 +3678,8 @@ static int ath10k_add_interface(struct ieee80211_hw *hw,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
if (arvif->vdev_type == WMI_VDEV_TYPE_AP) {
|
||||||
ret = ath10k_peer_create(ar, arvif->vdev_id, vif->addr);
|
ret = ath10k_peer_create(ar, arvif->vdev_id, vif->addr,
|
||||||
|
WMI_PEER_TYPE_DEFAULT);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath10k_warn(ar, "failed to create vdev %i peer for AP: %d\n",
|
ath10k_warn(ar, "failed to create vdev %i peer for AP: %d\n",
|
||||||
arvif->vdev_id, ret);
|
arvif->vdev_id, ret);
|
||||||
@ -4471,7 +4475,8 @@ static int ath10k_sta_state(struct ieee80211_hw *hw,
|
|||||||
goto exit;
|
goto exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = ath10k_peer_create(ar, arvif->vdev_id, sta->addr);
|
ret = ath10k_peer_create(ar, arvif->vdev_id, sta->addr,
|
||||||
|
WMI_PEER_TYPE_DEFAULT);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
ath10k_warn(ar, "failed to add peer %pM for vdev %d when adding a new sta: %i\n",
|
ath10k_warn(ar, "failed to add peer %pM for vdev %d when adding a new sta: %i\n",
|
||||||
sta->addr, arvif->vdev_id, ret);
|
sta->addr, arvif->vdev_id, ret);
|
||||||
|
@ -85,7 +85,8 @@ struct wmi_ops {
|
|||||||
struct sk_buff *(*gen_vdev_wmm_conf)(struct ath10k *ar, u32 vdev_id,
|
struct sk_buff *(*gen_vdev_wmm_conf)(struct ath10k *ar, u32 vdev_id,
|
||||||
const struct wmi_wmm_params_all_arg *arg);
|
const struct wmi_wmm_params_all_arg *arg);
|
||||||
struct sk_buff *(*gen_peer_create)(struct ath10k *ar, u32 vdev_id,
|
struct sk_buff *(*gen_peer_create)(struct ath10k *ar, u32 vdev_id,
|
||||||
const u8 peer_addr[ETH_ALEN]);
|
const u8 peer_addr[ETH_ALEN],
|
||||||
|
enum wmi_peer_type peer_type);
|
||||||
struct sk_buff *(*gen_peer_delete)(struct ath10k *ar, u32 vdev_id,
|
struct sk_buff *(*gen_peer_delete)(struct ath10k *ar, u32 vdev_id,
|
||||||
const u8 peer_addr[ETH_ALEN]);
|
const u8 peer_addr[ETH_ALEN]);
|
||||||
struct sk_buff *(*gen_peer_flush)(struct ath10k *ar, u32 vdev_id,
|
struct sk_buff *(*gen_peer_flush)(struct ath10k *ar, u32 vdev_id,
|
||||||
@ -661,14 +662,15 @@ ath10k_wmi_vdev_wmm_conf(struct ath10k *ar, u32 vdev_id,
|
|||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
ath10k_wmi_peer_create(struct ath10k *ar, u32 vdev_id,
|
ath10k_wmi_peer_create(struct ath10k *ar, u32 vdev_id,
|
||||||
const u8 peer_addr[ETH_ALEN])
|
const u8 peer_addr[ETH_ALEN],
|
||||||
|
enum wmi_peer_type peer_type)
|
||||||
{
|
{
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
|
||||||
if (!ar->wmi.ops->gen_peer_create)
|
if (!ar->wmi.ops->gen_peer_create)
|
||||||
return -EOPNOTSUPP;
|
return -EOPNOTSUPP;
|
||||||
|
|
||||||
skb = ar->wmi.ops->gen_peer_create(ar, vdev_id, peer_addr);
|
skb = ar->wmi.ops->gen_peer_create(ar, vdev_id, peer_addr, peer_type);
|
||||||
if (IS_ERR(skb))
|
if (IS_ERR(skb))
|
||||||
return PTR_ERR(skb);
|
return PTR_ERR(skb);
|
||||||
|
|
||||||
|
@ -1892,7 +1892,8 @@ ath10k_wmi_tlv_op_gen_sta_keepalive(struct ath10k *ar,
|
|||||||
|
|
||||||
static struct sk_buff *
|
static struct sk_buff *
|
||||||
ath10k_wmi_tlv_op_gen_peer_create(struct ath10k *ar, u32 vdev_id,
|
ath10k_wmi_tlv_op_gen_peer_create(struct ath10k *ar, u32 vdev_id,
|
||||||
const u8 peer_addr[ETH_ALEN])
|
const u8 peer_addr[ETH_ALEN],
|
||||||
|
enum wmi_peer_type peer_type)
|
||||||
{
|
{
|
||||||
struct wmi_tlv_peer_create_cmd *cmd;
|
struct wmi_tlv_peer_create_cmd *cmd;
|
||||||
struct wmi_tlv *tlv;
|
struct wmi_tlv *tlv;
|
||||||
@ -1907,7 +1908,7 @@ ath10k_wmi_tlv_op_gen_peer_create(struct ath10k *ar, u32 vdev_id,
|
|||||||
tlv->len = __cpu_to_le16(sizeof(*cmd));
|
tlv->len = __cpu_to_le16(sizeof(*cmd));
|
||||||
cmd = (void *)tlv->value;
|
cmd = (void *)tlv->value;
|
||||||
cmd->vdev_id = __cpu_to_le32(vdev_id);
|
cmd->vdev_id = __cpu_to_le32(vdev_id);
|
||||||
cmd->peer_type = __cpu_to_le32(WMI_TLV_PEER_TYPE_DEFAULT); /* FIXME */
|
cmd->peer_type = __cpu_to_le32(peer_type);
|
||||||
ether_addr_copy(cmd->peer_addr.addr, peer_addr);
|
ether_addr_copy(cmd->peer_addr.addr, peer_addr);
|
||||||
|
|
||||||
ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi tlv peer create\n");
|
ath10k_dbg(ar, ATH10K_DBG_WMI, "wmi tlv peer create\n");
|
||||||
|
@ -4522,7 +4522,8 @@ ath10k_wmi_op_gen_vdev_spectral_enable(struct ath10k *ar, u32 vdev_id,
|
|||||||
|
|
||||||
static struct sk_buff *
|
static struct sk_buff *
|
||||||
ath10k_wmi_op_gen_peer_create(struct ath10k *ar, u32 vdev_id,
|
ath10k_wmi_op_gen_peer_create(struct ath10k *ar, u32 vdev_id,
|
||||||
const u8 peer_addr[ETH_ALEN])
|
const u8 peer_addr[ETH_ALEN],
|
||||||
|
enum wmi_peer_type peer_type)
|
||||||
{
|
{
|
||||||
struct wmi_peer_create_cmd *cmd;
|
struct wmi_peer_create_cmd *cmd;
|
||||||
struct sk_buff *skb;
|
struct sk_buff *skb;
|
||||||
|
@ -4333,6 +4333,12 @@ struct wmi_peer_create_cmd {
|
|||||||
struct wmi_mac_addr peer_macaddr;
|
struct wmi_mac_addr peer_macaddr;
|
||||||
} __packed;
|
} __packed;
|
||||||
|
|
||||||
|
enum wmi_peer_type {
|
||||||
|
WMI_PEER_TYPE_DEFAULT = 0,
|
||||||
|
WMI_PEER_TYPE_BSS = 1,
|
||||||
|
WMI_PEER_TYPE_TDLS = 2,
|
||||||
|
};
|
||||||
|
|
||||||
struct wmi_peer_delete_cmd {
|
struct wmi_peer_delete_cmd {
|
||||||
__le32 vdev_id;
|
__le32 vdev_id;
|
||||||
struct wmi_mac_addr peer_macaddr;
|
struct wmi_mac_addr peer_macaddr;
|
||||||
|
Loading…
Reference in New Issue
Block a user