mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-14 14:42:34 -04:00
wifi: ath12k: add multi-link flag in peer create command
Driver should indicate to firmware whether a peer is multi-link or not in peer create command using multi-link flag. Add changes to support WMI_TAG_MLO_PEER_CREATE_PARAMS in WMI_PEER_CREATE_CMDID. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 Signed-off-by: Sriram R <quic_srirrama@quicinc.com> Signed-off-by: Harshitha Prem <quic_hprem@quicinc.com> Signed-off-by: Kalle Valo <quic_kvalo@quicinc.com> Acked-by: Jeff Johnson <quic_jjohnson@quicinc.com> Link: https://patch.msgid.link/20241101151705.165987-7-kvalo@kernel.org Signed-off-by: Jeff Johnson <quic_jjohnson@quicinc.com>
This commit is contained in:
@@ -4969,8 +4969,9 @@ static int ath12k_mac_station_add(struct ath12k *ar,
|
||||
}
|
||||
|
||||
peer_param.vdev_id = arvif->vdev_id;
|
||||
peer_param.peer_addr = sta->addr;
|
||||
peer_param.peer_addr = arsta->addr;
|
||||
peer_param.peer_type = WMI_PEER_TYPE_DEFAULT;
|
||||
peer_param.ml_enabled = sta->mlo;
|
||||
|
||||
ret = ath12k_peer_create(ar, arvif, sta, &peer_param);
|
||||
if (ret) {
|
||||
@@ -7005,7 +7006,7 @@ int ath12k_mac_vdev_create(struct ath12k *ar, struct ath12k_link_vif *arvif)
|
||||
struct ath12k_vif *ahvif = arvif->ahvif;
|
||||
struct ieee80211_vif *vif = ath12k_ahvif_to_vif(ahvif);
|
||||
struct ath12k_wmi_vdev_create_arg vdev_arg = {0};
|
||||
struct ath12k_wmi_peer_create_arg peer_param;
|
||||
struct ath12k_wmi_peer_create_arg peer_param = {0};
|
||||
struct ieee80211_bss_conf *link_conf;
|
||||
u32 param_id, param_value;
|
||||
u16 nss;
|
||||
|
||||
@@ -1230,9 +1230,14 @@ int ath12k_wmi_send_peer_create_cmd(struct ath12k *ar,
|
||||
struct ath12k_wmi_pdev *wmi = ar->wmi;
|
||||
struct wmi_peer_create_cmd *cmd;
|
||||
struct sk_buff *skb;
|
||||
int ret;
|
||||
int ret, len;
|
||||
struct wmi_peer_create_mlo_params *ml_param;
|
||||
void *ptr;
|
||||
struct wmi_tlv *tlv;
|
||||
|
||||
skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, sizeof(*cmd));
|
||||
len = sizeof(*cmd) + TLV_HDR_SIZE + sizeof(*ml_param);
|
||||
|
||||
skb = ath12k_wmi_alloc_skb(wmi->wmi_ab, len);
|
||||
if (!skb)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1244,9 +1249,23 @@ int ath12k_wmi_send_peer_create_cmd(struct ath12k *ar,
|
||||
cmd->peer_type = cpu_to_le32(arg->peer_type);
|
||||
cmd->vdev_id = cpu_to_le32(arg->vdev_id);
|
||||
|
||||
ptr = skb->data + sizeof(*cmd);
|
||||
tlv = ptr;
|
||||
tlv->header = ath12k_wmi_tlv_hdr(WMI_TAG_ARRAY_STRUCT,
|
||||
sizeof(*ml_param));
|
||||
ptr += TLV_HDR_SIZE;
|
||||
ml_param = ptr;
|
||||
ml_param->tlv_header =
|
||||
ath12k_wmi_tlv_cmd_hdr(WMI_TAG_MLO_PEER_CREATE_PARAMS,
|
||||
sizeof(*ml_param));
|
||||
if (arg->ml_enabled)
|
||||
ml_param->flags = cpu_to_le32(ATH12K_WMI_FLAG_MLO_ENABLED);
|
||||
|
||||
ptr += sizeof(*ml_param);
|
||||
|
||||
ath12k_dbg(ar->ab, ATH12K_DBG_WMI,
|
||||
"WMI peer create vdev_id %d peer_addr %pM\n",
|
||||
arg->vdev_id, arg->peer_addr);
|
||||
"WMI peer create vdev_id %d peer_addr %pM ml_flags 0x%x\n",
|
||||
arg->vdev_id, arg->peer_addr, ml_param->flags);
|
||||
|
||||
ret = ath12k_wmi_cmd_send(wmi, skb, WMI_PEER_CREATE_CMDID);
|
||||
if (ret) {
|
||||
|
||||
@@ -3015,6 +3015,12 @@ struct ath12k_wmi_peer_create_arg {
|
||||
const u8 *peer_addr;
|
||||
u32 peer_type;
|
||||
u32 vdev_id;
|
||||
bool ml_enabled;
|
||||
};
|
||||
|
||||
struct wmi_peer_create_mlo_params {
|
||||
__le32 tlv_header;
|
||||
__le32 flags;
|
||||
};
|
||||
|
||||
struct ath12k_wmi_pdev_set_regdomain_arg {
|
||||
|
||||
Reference in New Issue
Block a user