* drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
@ 2026-11-05 2:29 kernel test robot
0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-11-05 2:29 UTC (permalink / raw)
To: oe-kbuild; +Cc: lkp, Dan Carpenter
Unfiltered warning: this smatch report is sent as-is and has not been
reviewed for false positives, so please treat it with due skepticism.
BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: linux-kernel@vger.kernel.org
TO: Tamizh Chelvam Raja <tamizh.raja@oss.qualcomm.com>
CC: Jeff Johnson <jeff.johnson@oss.qualcomm.com>
CC: Rameshkumar Sundaram <rameshkumar.sundaram@oss.qualcomm.com>
CC: Baochen Qiang <baochen.qiang@oss.qualcomm.com>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 05441d697f7f9a927264f4058cbbc6a03dfcac9d
commit: 2f57f737dbf3005951a045eb9d1daaff0095f6c1 wifi: ath12k: Add support for 4-address mode
date: 5 months ago
:::::: branch date: 34 hours ago
:::::: commit date: 5 months ago
config: parisc-randconfig-2200-20261104 (https://download.01.org/0day-ci/archive/20261105/202611050352.XfwHuKAc-lkp@intel.com/config)
compiler: hppa-linux-gcc (GCC) 8.5.0
smatch: v0.5.0-9187-g5189e3fb
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Fixes: 2f57f737dbf3 ("wifi: ath12k: Add support for 4-address mode")
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <error27@gmail.com>
| Closes: https://lore.kernel.org/r/202611050352.XfwHuKAc-lkp@intel.com/
smatch warnings:
drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15
vim +979 drivers/net/wireless/ath/ath12k/wifi7/hw.c
d889913205cf7e drivers/net/wireless/ath/ath12k/hw.c Kalle Valo 2022-11-28 878
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 879 /* Note: called under rcu_read_lock() */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 880 static void ath12k_wifi7_mac_op_tx(struct ieee80211_hw *hw,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 881 struct ieee80211_tx_control *control,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 882 struct sk_buff *skb)
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 883 {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 884 struct ath12k_skb_cb *skb_cb = ATH12K_SKB_CB(skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 885 struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 886 struct ieee80211_vif *vif = info->control.vif;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 887 struct ath12k_vif *ahvif = ath12k_vif_to_ahvif(vif);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 888 struct ath12k_link_vif *arvif = &ahvif->deflink;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 889 struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 890 struct ieee80211_key_conf *key = info->control.hw_key;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 891 struct ieee80211_sta *sta = control->sta;
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 892 struct ath12k_link_sta *arsta = NULL;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 893 struct ath12k_link_vif *tmp_arvif;
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 894 struct ath12k_sta *ahsta = NULL;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 895 u32 info_flags = info->flags;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 896 struct sk_buff *msdu_copied;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 897 struct ath12k *ar, *tmp_ar;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 898 struct ath12k_pdev_dp *dp_pdev, *tmp_dp_pdev;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 899 struct ath12k_dp_link_peer *peer;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 900 unsigned long links_map;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 901 bool is_mcast = false;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 902 bool is_dvlan = false;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 903 struct ethhdr *eth;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 904 bool is_prb_rsp;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 905 u16 mcbc_gsn;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 906 u8 link_id;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 907 int ret;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 908 struct ath12k_dp *tmp_dp;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 909
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 910 if (ahvif->vdev_type == WMI_VDEV_TYPE_MONITOR) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 911 ieee80211_free_txskb(hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 912 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 913 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 914
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 915 link_id = u32_get_bits(info->control.flags, IEEE80211_TX_CTRL_MLO_LINK);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 916 memset(skb_cb, 0, sizeof(*skb_cb));
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 917 skb_cb->vif = vif;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 918
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 919 if (key) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 920 skb_cb->cipher = key->cipher;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 921 skb_cb->flags |= ATH12K_SKB_CIPHER_SET;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 922 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 923
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 924 /* handle only for MLO case, use deflink for non MLO case */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 925 if (ieee80211_vif_is_mld(vif)) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 926 link_id = ath12k_mac_get_tx_link(sta, vif, link_id, skb, info_flags);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 927 if (link_id >= IEEE80211_MLD_MAX_NUM_LINKS) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 928 ieee80211_free_txskb(hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 929 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 930 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 931 } else {
9abf22075da98c drivers/net/wireless/ath/ath12k/wifi7/hw.c Jakub Kicinski 2026-01-22 932 if (vif->type == NL80211_IFTYPE_P2P_DEVICE)
9abf22075da98c drivers/net/wireless/ath/ath12k/wifi7/hw.c Jakub Kicinski 2026-01-22 933 link_id = ATH12K_FIRST_SCAN_LINK;
9abf22075da98c drivers/net/wireless/ath/ath12k/wifi7/hw.c Jakub Kicinski 2026-01-22 934 else
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 935 link_id = 0;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 936 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 937
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 938 arvif = rcu_dereference(ahvif->link[link_id]);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 939 if (!arvif || !arvif->ar) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 940 ath12k_warn(ahvif->ah, "failed to find arvif link id %u for frame transmission",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 941 link_id);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 942 ieee80211_free_txskb(hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 943 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 944 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 945
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 946 ar = arvif->ar;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 947 skb_cb->link_id = link_id;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 948 /*
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 949 * as skb_cb is common currently for dp and mgmt tx processing
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 950 * set this in the common mac op tx function.
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 951 */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 952 skb_cb->ar = ar;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 953 is_prb_rsp = ieee80211_is_probe_resp(hdr->frame_control);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 954
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 955 if (info_flags & IEEE80211_TX_CTL_HW_80211_ENCAP) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 956 eth = (struct ethhdr *)skb->data;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 957 is_mcast = is_multicast_ether_addr(eth->h_dest);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 958
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 959 skb_cb->flags |= ATH12K_SKB_HW_80211_ENCAP;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 960 } else if (ieee80211_is_mgmt(hdr->frame_control)) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 961 if (sta && sta->mlo)
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 962 skb_cb->flags |= ATH12K_SKB_MLO_STA;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 963
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 964 ret = ath12k_mac_mgmt_tx(ar, skb, is_prb_rsp);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 965 if (ret) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 966 ath12k_warn(ar->ab, "failed to queue management frame %d\n",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 967 ret);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 968 ieee80211_free_txskb(hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 969 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 970 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 971 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 972
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 973 if (!(info_flags & IEEE80211_TX_CTL_HW_80211_ENCAP))
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 974 is_mcast = is_multicast_ether_addr(hdr->addr1);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 975
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 976 if (sta) {
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 977 ahsta = ath12k_sta_to_ahsta(control->sta);
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 978 if (ahsta && ahsta->enable_4addr)
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 @979 arsta = rcu_dereference(ahsta->link[link_id]);
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 980 }
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 981
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 982 /* This is case only for P2P_GO */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 983 if (vif->type == NL80211_IFTYPE_AP && vif->p2p)
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 984 ath12k_mac_add_p2p_noa_ie(ar, vif, skb, is_prb_rsp);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 985
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 986 dp_pdev = ath12k_dp_to_pdev_dp(ar->ab->dp, ar->pdev_idx);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 987 if (!dp_pdev) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 988 ieee80211_free_txskb(hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 989 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 990 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 991
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 992 /* Checking if it is a DVLAN frame */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 993 if (!test_bit(ATH12K_FLAG_HW_CRYPTO_DISABLED, &ar->ab->dev_flags) &&
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 994 !(skb_cb->flags & ATH12K_SKB_HW_80211_ENCAP) &&
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 995 !(skb_cb->flags & ATH12K_SKB_CIPHER_SET) &&
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 996 ieee80211_has_protected(hdr->frame_control))
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 997 is_dvlan = true;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 998
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 999 if (!vif->valid_links || !is_mcast || is_dvlan ||
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1000 (skb_cb->flags & ATH12K_SKB_HW_80211_ENCAP) ||
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1001 test_bit(ATH12K_FLAG_RAW_MODE, &ar->ab->dev_flags)) {
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1002 ret = ath12k_wifi7_dp_tx(dp_pdev, arvif, arsta, skb, false, 0, is_mcast);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1003 if (unlikely(ret)) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1004 ath12k_warn(ar->ab, "failed to transmit frame %d\n", ret);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1005 ieee80211_free_txskb(ar->ah->hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1006 return;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1007 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1008 } else {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1009 mcbc_gsn = atomic_inc_return(&ahvif->dp_vif.mcbc_gsn) & 0xfff;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1010
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1011 links_map = ahvif->links_map;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1012 for_each_set_bit(link_id, &links_map,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1013 IEEE80211_MLD_MAX_NUM_LINKS) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1014 tmp_arvif = rcu_dereference(ahvif->link[link_id]);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1015 if (!tmp_arvif || !tmp_arvif->is_up)
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1016 continue;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1017
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1018 tmp_ar = tmp_arvif->ar;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1019 tmp_dp_pdev = ath12k_dp_to_pdev_dp(tmp_ar->ab->dp,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1020 tmp_ar->pdev_idx);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1021 if (!tmp_dp_pdev)
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1022 continue;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1023 msdu_copied = skb_copy(skb, GFP_ATOMIC);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1024 if (!msdu_copied) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1025 ath12k_err(ar->ab,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1026 "skb copy failure link_id 0x%X vdevid 0x%X\n",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1027 link_id, tmp_arvif->vdev_id);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1028 continue;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1029 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1030
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1031 ath12k_mlo_mcast_update_tx_link_address(vif, link_id,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1032 msdu_copied,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1033 info_flags);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1034
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1035 skb_cb = ATH12K_SKB_CB(msdu_copied);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1036 skb_cb->link_id = link_id;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1037 skb_cb->vif = vif;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1038 skb_cb->ar = tmp_ar;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1039
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1040 if (ahsta && ahsta->enable_4addr)
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1041 arsta = rcu_dereference(ahsta->link[link_id]);
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1042 else
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1043 arsta = NULL;
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1044
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1045 /* For open mode, skip peer find logic */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1046 if (unlikely(!ahvif->dp_vif.key_cipher))
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1047 goto skip_peer_find;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1048
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1049 tmp_dp = ath12k_ab_to_dp(tmp_ar->ab);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1050 spin_lock_bh(&tmp_dp->dp_lock);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1051 peer = ath12k_dp_link_peer_find_by_addr(tmp_dp,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1052 tmp_arvif->bssid);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1053 if (!peer || !peer->dp_peer) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1054 spin_unlock_bh(&tmp_dp->dp_lock);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1055 ath12k_warn(tmp_ar->ab,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1056 "failed to find peer for vdev_id 0x%X addr %pM link_map 0x%X\n",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1057 tmp_arvif->vdev_id, tmp_arvif->bssid,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1058 ahvif->links_map);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1059 dev_kfree_skb_any(msdu_copied);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1060 continue;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1061 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1062
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1063 key = peer->dp_peer->keys[peer->dp_peer->mcast_keyidx];
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1064 if (key) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1065 skb_cb->cipher = key->cipher;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1066 skb_cb->flags |= ATH12K_SKB_CIPHER_SET;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1067
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1068 hdr = (struct ieee80211_hdr *)msdu_copied->data;
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1069 if (!ieee80211_has_protected(hdr->frame_control))
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1070 hdr->frame_control |=
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1071 cpu_to_le16(IEEE80211_FCTL_PROTECTED);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1072 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1073 spin_unlock_bh(&tmp_dp->dp_lock);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1074
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1075 skip_peer_find:
2f57f737dbf300 drivers/net/wireless/ath/ath12k/wifi7/hw.c Tamizh Chelvam Raja 2026-05-25 1076 ret = ath12k_wifi7_dp_tx(tmp_dp_pdev, tmp_arvif, arsta,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1077 msdu_copied, true, mcbc_gsn, is_mcast);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1078 if (unlikely(ret)) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1079 if (ret == -ENOMEM) {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1080 /* Drops are expected during heavy multicast
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1081 * frame flood. Print with debug log
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1082 * level to avoid lot of console prints
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1083 */
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1084 ath12k_dbg(ar->ab, ATH12K_DBG_MAC,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1085 "failed to transmit frame %d\n",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1086 ret);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1087 } else {
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1088 ath12k_warn(ar->ab,
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1089 "failed to transmit frame %d\n",
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1090 ret);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1091 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1092
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1093 dev_kfree_skb_any(msdu_copied);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1094 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1095 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1096 ieee80211_free_txskb(ar->ah->hw, skb);
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1097 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1098 }
c26f294fef2a4b drivers/net/wireless/ath/ath12k/wifi7/hw.c Ripan Deuri 2025-11-03 1099
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-11-05 2:30 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-11-05 2:29 drivers/net/wireless/ath/ath12k/wifi7/hw.c:979 ath12k_wifi7_mac_op_tx() error: buffer overflow 'ahsta->link' 15 <= 15 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.