get_vect.c

由于未提供博客具体内容,无法生成包含关键信息的摘要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
u8 siwifi_rxdataind(void *pthis, void *arg) { struct siwifi_hw *siwifi_hw = pthis; struct siwifi_ipc_buf *ipc_desc = arg; struct siwifi_ipc_buf *ipc_buf; struct hw_rxhdr *hw_rxhdr = NULL; struct rxdesc_tag *rxdesc; struct siwifi_vif *siwifi_vif; struct sk_buff *skb = NULL; #ifdef SIWIFI_VDR_IFACE_SUPPORT struct ieee80211_hdr *mon_sta_mgt; struct ieee80211_hdr *mon_sta_invalid_data; struct ethhdr *mon_sta_data; #endif int msdu_offset = sizeof(struct hw_rxhdr); int nb_buff = 1; u16_l status; REG_SW_SET_PROFILING(siwifi_hw, SW_PROF_SIWIFIDATAIND); siwifi_ipc_buf_e2a_sync(siwifi_hw, ipc_desc, sizeof(struct rxdesc_tag)); rxdesc = ipc_desc->addr; status = rxdesc->status; if (!status) { /* Frame is not completely uploaded, give back ownership of the descriptor */ siwifi_ipc_buf_e2a_sync_back(siwifi_hw, ipc_desc, sizeof(struct rxdesc_tag)); return -1; } ipc_buf = siwifi_ipc_rxbuf_from_hostid(siwifi_hw, rxdesc->host_id); if (!ipc_buf) { goto check_alloc; } skb = ipc_buf->addr; siwifi_hw->stats.rx_ind_cnts++; #ifdef SIWIFI_VDR_IFACE_SUPPORT // RM#1003241 ioctrl to set key to receive pointed mac addr frame if (status & RX_STAT_MON_STA) { hw_rxhdr = (struct hw_rxhdr *)skb->data; if (!RX_FLAGS_GET(80211_MPDU, hw_rxhdr->flags)) { if (status & RX_STAT_INVALID_STA) { mon_sta_invalid_data = (struct ieee80211_hdr *)((u8 *)skb->data + msdu_offset); printk("receive DATA frame form %pM !!! RA: %pM rssi0 is:%d rssi1 is:%d", mon_sta_invalid_data->addr2, mon_sta_invalid_data->addr1, hw_rxhdr->hwvect.rx_vect1.rssi0, hw_rxhdr->hwvect.rx_vect1.rssi1); siwifi_ipc_buf_e2a_release(siwifi_hw, ipc_buf); nb_buff = siwifi_rx_amsdu_free(siwifi_hw, hw_rxhdr); dev_kfree_skb(skb); goto check_alloc; } else { mon_sta_data = (struct ethhdr *)((u8 *)skb->data + msdu_offset); printk("receive DATA frame form %pM !!! RA: %pM rssi0 is:%d rssi1 is:%d", mon_sta_data->h_source, mon_sta_data->h_dest, hw_rxhdr->hwvect.rx_vect1.rssi0, hw_rxhdr->hwvect.rx_vect1.rssi1); } } else { mon_sta_mgt = (struct ieee80211_hdr *)((u8 *)skb->data + msdu_offset); printk("receive MGT frame form %pM !!! RA: %pM rssi0 is:%d rssi1 is:%d", mon_sta_mgt->addr2, mon_sta_mgt->addr1, hw_rxhdr->hwvect.rx_vect1.rssi0, hw_rxhdr->hwvect.rx_vect1.rssi1); if (status & RX_STAT_INVALID_STA && mon_sta_mgt->addr1[0] != 0xFF && mon_sta_mgt->addr1[1] != 0xFF && mon_sta_mgt->addr1[2] != 0xFF && mon_sta_mgt->addr1[3] != 0xFF && mon_sta_mgt->addr1[4] != 0xFF && mon_sta_mgt->addr1[5] != 0xFF) { siwifi_ipc_buf_e2a_release(siwifi_hw, ipc_buf); nb_buff = siwifi_rx_amsdu_free(siwifi_hw, hw_rxhdr); dev_kfree_skb(skb); goto check_alloc; } } } #endif }这段函数里面siwifi_rx_amsdu_free之后又使用dev_kfree_skb可以吗
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值