|
@@ -383,6 +383,14 @@ struct hwsim_radiotap_hdr {
|
|
|
__le16 rt_chbitmask;
|
|
|
} __packed;
|
|
|
|
|
|
+struct hwsim_radiotap_ack_hdr {
|
|
|
+ struct ieee80211_radiotap_header hdr;
|
|
|
+ u8 rt_flags;
|
|
|
+ u8 pad;
|
|
|
+ __le16 rt_channel;
|
|
|
+ __le16 rt_chbitmask;
|
|
|
+} __packed;
|
|
|
+
|
|
|
/* MAC80211_HWSIM netlinf family */
|
|
|
static struct genl_family hwsim_genl_family = {
|
|
|
.id = GENL_ID_GENERATE,
|
|
@@ -500,7 +508,7 @@ static void mac80211_hwsim_monitor_ack(struct ieee80211_channel *chan,
|
|
|
const u8 *addr)
|
|
|
{
|
|
|
struct sk_buff *skb;
|
|
|
- struct hwsim_radiotap_hdr *hdr;
|
|
|
+ struct hwsim_radiotap_ack_hdr *hdr;
|
|
|
u16 flags;
|
|
|
struct ieee80211_hdr *hdr11;
|
|
|
|
|
@@ -511,14 +519,14 @@ static void mac80211_hwsim_monitor_ack(struct ieee80211_channel *chan,
|
|
|
if (skb == NULL)
|
|
|
return;
|
|
|
|
|
|
- hdr = (struct hwsim_radiotap_hdr *) skb_put(skb, sizeof(*hdr));
|
|
|
+ hdr = (struct hwsim_radiotap_ack_hdr *) skb_put(skb, sizeof(*hdr));
|
|
|
hdr->hdr.it_version = PKTHDR_RADIOTAP_VERSION;
|
|
|
hdr->hdr.it_pad = 0;
|
|
|
hdr->hdr.it_len = cpu_to_le16(sizeof(*hdr));
|
|
|
hdr->hdr.it_present = cpu_to_le32((1 << IEEE80211_RADIOTAP_FLAGS) |
|
|
|
(1 << IEEE80211_RADIOTAP_CHANNEL));
|
|
|
hdr->rt_flags = 0;
|
|
|
- hdr->rt_rate = 0;
|
|
|
+ hdr->pad = 0;
|
|
|
hdr->rt_channel = cpu_to_le16(chan->center_freq);
|
|
|
flags = IEEE80211_CHAN_2GHZ;
|
|
|
hdr->rt_chbitmask = cpu_to_le16(flags);
|