diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-09-10 18:01:49 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-09-15 16:48:20 -0400 |
commit | 472dbc45dc1966284de72d7de15690c17ed2cf33 (patch) | |
tree | e8bfb88067f7fd8845978d1613f868e6a4499999 /net/mac80211/tx.c | |
parent | 7c95069522d02ff144cd421be6618dce619caf7e (diff) |
mac80211: split off mesh handling entirely
This patch splits off mesh handling from the STA/IBSS.
Unfortunately it increases mesh code size a bit, but I
think it makes things clearer. The patch also reduces
per-interface run-time memory usage.
Also clean up a few places where ifdef is not required.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/tx.c')
-rw-r--r-- | net/mac80211/tx.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c index c413d4836afe..1059b17c83b0 100644 --- a/net/mac80211/tx.c +++ b/net/mac80211/tx.c | |||
@@ -1330,7 +1330,7 @@ int ieee80211_master_start_xmit(struct sk_buff *skb, | |||
1330 | if (mesh_nexthop_lookup(skb, osdata)) | 1330 | if (mesh_nexthop_lookup(skb, osdata)) |
1331 | return 0; | 1331 | return 0; |
1332 | if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0) | 1332 | if (memcmp(odev->dev_addr, hdr->addr4, ETH_ALEN) != 0) |
1333 | IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.sta, | 1333 | IEEE80211_IFSTA_MESH_CTR_INC(&osdata->u.mesh, |
1334 | fwded_frames); | 1334 | fwded_frames); |
1335 | } | 1335 | } |
1336 | } | 1336 | } |
@@ -1483,9 +1483,9 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, | |||
1483 | memcpy(hdr.addr2, dev->dev_addr, ETH_ALEN); | 1483 | memcpy(hdr.addr2, dev->dev_addr, ETH_ALEN); |
1484 | memcpy(hdr.addr3, skb->data, ETH_ALEN); | 1484 | memcpy(hdr.addr3, skb->data, ETH_ALEN); |
1485 | memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN); | 1485 | memcpy(hdr.addr4, skb->data + ETH_ALEN, ETH_ALEN); |
1486 | if (!sdata->u.sta.mshcfg.dot11MeshTTL) { | 1486 | if (!sdata->u.mesh.mshcfg.dot11MeshTTL) { |
1487 | /* Do not send frames with mesh_ttl == 0 */ | 1487 | /* Do not send frames with mesh_ttl == 0 */ |
1488 | sdata->u.sta.mshstats.dropped_frames_ttl++; | 1488 | sdata->u.mesh.mshstats.dropped_frames_ttl++; |
1489 | ret = 0; | 1489 | ret = 0; |
1490 | goto fail; | 1490 | goto fail; |
1491 | } | 1491 | } |
@@ -1815,10 +1815,8 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1815 | struct rate_selection rsel; | 1815 | struct rate_selection rsel; |
1816 | struct beacon_data *beacon; | 1816 | struct beacon_data *beacon; |
1817 | struct ieee80211_supported_band *sband; | 1817 | struct ieee80211_supported_band *sband; |
1818 | struct ieee80211_mgmt *mgmt; | ||
1819 | int *num_beacons; | 1818 | int *num_beacons; |
1820 | enum ieee80211_band band = local->hw.conf.channel->band; | 1819 | enum ieee80211_band band = local->hw.conf.channel->band; |
1821 | u8 *pos; | ||
1822 | 1820 | ||
1823 | sband = local->hw.wiphy->bands[band]; | 1821 | sband = local->hw.wiphy->bands[band]; |
1824 | 1822 | ||
@@ -1885,7 +1883,11 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1885 | IEEE80211_STYPE_BEACON); | 1883 | IEEE80211_STYPE_BEACON); |
1886 | 1884 | ||
1887 | num_beacons = &ifsta->num_beacons; | 1885 | num_beacons = &ifsta->num_beacons; |
1886 | #ifdef CONFIG_MAC80211_MESH | ||
1888 | } else if (ieee80211_vif_is_mesh(&sdata->vif)) { | 1887 | } else if (ieee80211_vif_is_mesh(&sdata->vif)) { |
1888 | struct ieee80211_mgmt *mgmt; | ||
1889 | u8 *pos; | ||
1890 | |||
1889 | /* headroom, head length, tail length and maximum TIM length */ | 1891 | /* headroom, head length, tail length and maximum TIM length */ |
1890 | skb = dev_alloc_skb(local->tx_headroom + 400); | 1892 | skb = dev_alloc_skb(local->tx_headroom + 400); |
1891 | if (!skb) | 1893 | if (!skb) |
@@ -1910,7 +1912,8 @@ struct sk_buff *ieee80211_beacon_get(struct ieee80211_hw *hw, | |||
1910 | 1912 | ||
1911 | mesh_mgmt_ies_add(skb, sdata); | 1913 | mesh_mgmt_ies_add(skb, sdata); |
1912 | 1914 | ||
1913 | num_beacons = &sdata->u.sta.num_beacons; | 1915 | num_beacons = &sdata->u.mesh.num_beacons; |
1916 | #endif | ||
1914 | } else { | 1917 | } else { |
1915 | WARN_ON(1); | 1918 | WARN_ON(1); |
1916 | goto out; | 1919 | goto out; |