From 34258e769f574d56983dd4c9b2300f71dbcdaabc Mon Sep 17 00:00:00 2001 From: kimocoder Date: Sat, 11 Jan 2020 20:30:27 +0100 Subject: [PATCH] Fix: pcap_activate status -8 and pcap_activate status -1 --- core/rtw_xmit.c | 16 ++++++++++------ dkms.conf | 2 +- os_dep/linux/ioctl_cfg80211.c | 5 ----- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index a53fb67..dfd35b2 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -4413,7 +4413,7 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) struct xmit_priv *pxmitpriv = &(padapter->xmitpriv); unsigned char *pframe; u8 dummybuf[32]; - int len = skb->len, rtap_len; + int len = skb->len, rtap_len, consume; rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); @@ -4431,13 +4431,17 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) if (unlikely(skb->len < rtap_len)) goto fail; - if (rtap_len != 12) { - RTW_INFO("radiotap len (should be 14): %d\n", rtap_len); - goto fail; + len -= sizeof(struct ieee80211_radiotap_header); + rtap_len -= sizeof(struct ieee80211_radiotap_header); + + while(rtap_len) { + consume = rtap_len > sizeof(dummybuf) ? sizeof(dummybuf) : rtap_len; + _rtw_pktfile_read(&pktfile, dummybuf, consume); + rtap_len -= consume; + len -= consume; } - _rtw_pktfile_read(&pktfile, dummybuf, rtap_len-sizeof(struct ieee80211_radiotap_header)); - len = len - rtap_len; #endif + pmgntframe = alloc_mgtxmitframe(pxmitpriv); if (pmgntframe == NULL) { rtw_udelay_os(500); diff --git a/dkms.conf b/dkms.conf index f43b49c..f60e068 100644 --- a/dkms.conf +++ b/dkms.conf @@ -1,5 +1,5 @@ PACKAGE_NAME="realtek-rtl88xxau" -PACKAGE_VERSION="5.6.4.2~20200104" +PACKAGE_VERSION="5.6.4.2~20200111" CLEAN="'make' clean" BUILT_MODULE_NAME[0]=88XXau PROCS_NUM=`nproc` diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index 9850d2a..4975ac4 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -4588,11 +4588,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de if (unlikely(skb->len < rtap_len)) goto fail; - if (rtap_len != 14) { - RTW_INFO("radiotap len (should be 14): %d\n", rtap_len); - goto fail; - } - /* Skip the ratio tap header */ skb_pull(skb, rtap_len);