Message ID | 1446238820-21004-1-git-send-email-arwelle@cert.org (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Johannes Berg |
Headers | show |
On Fri, 2015-10-30 at 17:00 -0400, arwelle@cert.org wrote: > From: Adam Welle <arwelle@cert.org> > > If a frame is received from netlink with this value set it is checked > against the current radio's frequency and discarded if different. Please line-break the commit log to <=72 characters/line. > + /* Check ATTR_FREQ if it exists, and throw away off-channel > packets */ > + if (info->attrs[HWSIM_ATTR_FREQ]) > + rx_status.freq = nla_get_u32(info > ->attrs[HWSIM_ATTR_FREQ]); > + else > + rx_status.freq = data2->channel->center_freq; > + > + /* Drop packet if not on the same frequency as this radio */ > + if (rx_status.freq != data2->channel->center_freq) > + goto out; > I think it'd make sense to have that check only in the case that the attribute existed. I'm not too concerned about performance here, but more generally it looks odd if you're checking when you know it can't be different. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/wireless/mac80211_hwsim.c b/drivers/net/wireless/mac80211_hwsim.c index ee46f46..78faa72 100644 --- a/drivers/net/wireless/mac80211_hwsim.c +++ b/drivers/net/wireless/mac80211_hwsim.c @@ -2827,10 +2827,17 @@ static int hwsim_cloned_frame_received_nl(struct sk_buff *skb_2, /* A frame is received from user space */ memset(&rx_status, 0, sizeof(rx_status)); - /* TODO: Check ATTR_FREQ if it exists, and maybe throw away off-channel - * packets? - */ - rx_status.freq = data2->channel->center_freq; + + /* Check ATTR_FREQ if it exists, and throw away off-channel packets */ + if (info->attrs[HWSIM_ATTR_FREQ]) + rx_status.freq = nla_get_u32(info->attrs[HWSIM_ATTR_FREQ]); + else + rx_status.freq = data2->channel->center_freq; + + /* Drop packet if not on the same frequency as this radio */ + if (rx_status.freq != data2->channel->center_freq) + goto out; + rx_status.band = data2->channel->band; rx_status.rate_idx = nla_get_u32(info->attrs[HWSIM_ATTR_RX_RATE]); rx_status.signal = nla_get_u32(info->attrs[HWSIM_ATTR_SIGNAL]);