On 2/6/2024 10:17 AM, Kalle Valo wrote: > Kalle Valo <kvalo@xxxxxxxxxx> writes: > >> Kang Yang <quic_kangyang@xxxxxxxxxxx> writes: >> >>> The NoA(Notice of Absence) attribute is used by the P2P Group Owner to >>> signal its absence due to power save timing, concurrent operation, or >>> off-channel scanning. It is also used in the P2P Presence Request-Response >>> mechanism. >>> >>> The NoA attribute shall be present in the P2P IE in the beacon frames >>> transmitted by a P2P Group Owner when a NoA schedule is being advertised, >>> or when the CTWindow is non-zero. >>> >>> So add support to update P2P information after P2P GO is up through >>> event WMI_P2P_NOA_EVENTID, and always put it in probe resp. >>> >>> Create p2p.c and p2p.h for P2P related functions and definitions. >>> >>> Tested-on: WCN7850 hw2.0 PCI WLAN.HMT.1.0.c5-00481-QCAHMTSWPL_V1.0_V2.0_SILICONZ-3 >>> Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1 >>> >>> Signed-off-by: Kang Yang <quic_kangyang@xxxxxxxxxxx> >> >> [...] >> >>> +static int ath12k_wmi_p2p_noa_event(struct ath12k_base *ab, >>> + struct sk_buff *skb) >>> +{ >>> + const void **tb; >>> + const struct wmi_p2p_noa_event *ev; >>> + const struct ath12k_wmi_p2p_noa_info *noa; >>> + struct ath12k *ar; >>> + int ret, vdev_id; >>> + >>> + tb = ath12k_wmi_tlv_parse_alloc(ab, skb, GFP_ATOMIC); >>> + if (IS_ERR(tb)) { >>> + ret = PTR_ERR(tb); >>> + ath12k_warn(ab, "failed to parse tlv: %d\n", ret); >>> + return ret; >>> + } >>> + >>> + ev = tb[WMI_TAG_P2P_NOA_EVENT]; >>> + noa = tb[WMI_TAG_P2P_NOA_INFO]; >>> + >>> + if (!ev || !noa) { >>> + kfree(tb); >>> + return -EPROTO; >>> + } >>> + >>> + vdev_id = __le32_to_cpu(ev->vdev_id); >>> + >>> + ath12k_dbg(ab, ATH12K_DBG_WMI, >>> + "wmi tlv p2p noa vdev_id %i descriptors %u\n", >>> + vdev_id, le32_get_bits(noa->noa_attr, WMI_P2P_NOA_INFO_DESC_NUM)); >>> + ar = ath12k_mac_get_ar_by_vdev_id(ab, vdev_id); >>> + if (!ar) { >>> + ath12k_warn(ab, "invalid vdev id %d in P2P NoA event\n", >>> + vdev_id); >>> + return -EINVAL; >>> + } >> >> Aren't we leaking tb here? In this function I revamped the error >> handling to use the out label to make sure we are freeing tb in every >> error. Please review: >> >> https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=12e182b47078a48169e873c51d438d7417e7e0c8 > > I realised that ret was uninitialised when no error, new version: > > https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git/commit/?h=pending&id=43f3069f6580b8a67969a6f32377d35aa7dd8d9a Thanks Kalle, looks like I had a review failure on the original :( The version here LGTM :) /jeff >