Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b53a5dab authored by Pavel Roskin's avatar Pavel Roskin Committed by John W. Linville
Browse files

hostap: don't skip any headers in hostap_80211_header_parse()



Don't try to skip any headers in hostap_80211_header_parse().  We never
use that function for interfaces affected by local->monitor_type.  Both
the master and the AP interface receive 802.11 frames without any
additional headers.

Signed-off-by: default avatarPavel Roskin <proski@gnu.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 245727c1
Loading
Loading
Loading
Loading
+1 −19
Original line number Diff line number Diff line
@@ -596,25 +596,7 @@ void hostap_dump_tx_header(const char *name, const struct hfa384x_tx_frame *tx)

int hostap_80211_header_parse(const struct sk_buff *skb, unsigned char *haddr)
{
	struct hostap_interface *iface = netdev_priv(skb->dev);
	local_info_t *local = iface->local;

	if (local->monitor_type == PRISM2_MONITOR_PRISM ||
	    local->monitor_type == PRISM2_MONITOR_CAPHDR) {
		const unsigned char *mac = skb_mac_header(skb);

		if (*(u32 *)mac == LWNG_CAP_DID_BASE) {
			memcpy(haddr,
			       mac + sizeof(struct linux_wlan_ng_prism_hdr) + 10,
			       ETH_ALEN); /* addr2 */
		} else { /* (*(u32 *)mac == htonl(LWNG_CAPHDR_VERSION)) */
			memcpy(haddr,
			       mac + sizeof(struct linux_wlan_ng_cap_hdr) + 10,
			       ETH_ALEN); /* addr2 */
		}
	} else
	memcpy(haddr, skb_mac_header(skb) + 10, ETH_ALEN); /* addr2 */

	return ETH_ALEN;
}