Commit 7390ed34 authored by Marek Puzyniak's avatar Marek Puzyniak Committed by Kalle Valo

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: default avatarMarek Puzyniak <marek.puzyniak@tieto.com>
Signed-off-by: default avatarMarek Kwaczynski <marek.kwaczynski@tieto.com>
Signed-off-by: default avatarKalle Valo <kvalo@qca.qualcomm.com>
parent d740d8fd
...@@ -429,7 +429,8 @@ static u8 ath10k_parse_mpdudensity(u8 mpdudensity) ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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 { ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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 { ...@@ -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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment