/* Locking: the function must me called within a rcu_read_lock region  */
void mesh_path_discard_frame(struct sk_buff *skb, struct ieee80211_sub_if_data *sdata)
/* Locking: the function must me called within a rcu_read_lock region  */
void mesh_path_discard_frame(struct sk_buff *skb, struct ieee80211_sub_if_data *sdata)
{
	struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
	struct mesh_path *mpath;
	u32 sn = 0;
	if (memcmp(hdr->addr4, sdata->dev->dev_addr, ETH_ALEN) != 0) {
		u8 *ra, *da;
		da = hdr->addr3;
		ra = hdr->addr1;
		mpath = mesh_path_lookup(da, sdata);
		if (mpath)
			sn = ++mpath->sn;
		mesh_path_error_tx(MESH_TTL, skb->data, cpu_to_le32(sn),
				   cpu_to_le16(PERR_RCODE_NO_ROUTE), ra, sdata);
	}
	kfree_skb(skb);
	sdata->u.mesh.mshstats.dropped_frames_no_route++;
}