mac80211: Drop MESH_PLINK category and use new ANA-approved MESH_ACTION
Note: This breaks compatibility with previous mesh protocol instances. Signed-off-by: Javier Cardona <javier@cozybit.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
0778a6a3e5
commit
d3aaec8ab7
|
@ -1261,9 +1261,8 @@ enum ieee80211_category {
|
||||||
WLAN_CATEGORY_MULTIHOP_ACTION = 14,
|
WLAN_CATEGORY_MULTIHOP_ACTION = 14,
|
||||||
WLAN_CATEGORY_SELF_PROTECTED = 15,
|
WLAN_CATEGORY_SELF_PROTECTED = 15,
|
||||||
WLAN_CATEGORY_WMM = 17,
|
WLAN_CATEGORY_WMM = 17,
|
||||||
/* TODO: remove MESH_PLINK and MESH_PATH_SEL after */
|
/* TODO: remove MESH_PATH_SEL after mesh is updated
|
||||||
/* mesh is updated to current 802.11s draft */
|
* to current 802.11s draft */
|
||||||
WLAN_CATEGORY_MESH_PLINK = 30,
|
|
||||||
WLAN_CATEGORY_MESH_PATH_SEL = 32,
|
WLAN_CATEGORY_MESH_PATH_SEL = 32,
|
||||||
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126,
|
||||||
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
WLAN_CATEGORY_VENDOR_SPECIFIC = 127,
|
||||||
|
|
|
@ -600,7 +600,7 @@ static void ieee80211_mesh_rx_mgmt_action(struct ieee80211_sub_if_data *sdata,
|
||||||
struct ieee80211_rx_status *rx_status)
|
struct ieee80211_rx_status *rx_status)
|
||||||
{
|
{
|
||||||
switch (mgmt->u.action.category) {
|
switch (mgmt->u.action.category) {
|
||||||
case WLAN_CATEGORY_MESH_PLINK:
|
case WLAN_CATEGORY_MESH_ACTION:
|
||||||
mesh_rx_plink_frame(sdata, mgmt, len, rx_status);
|
mesh_rx_plink_frame(sdata, mgmt, len, rx_status);
|
||||||
break;
|
break;
|
||||||
case WLAN_CATEGORY_MESH_PATH_SEL:
|
case WLAN_CATEGORY_MESH_PATH_SEL:
|
||||||
|
|
|
@ -182,7 +182,7 @@ static int mesh_plink_frame_tx(struct ieee80211_sub_if_data *sdata,
|
||||||
memcpy(mgmt->da, da, ETH_ALEN);
|
memcpy(mgmt->da, da, ETH_ALEN);
|
||||||
memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
|
memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN);
|
||||||
/* BSSID is left zeroed, wildcard value */
|
/* BSSID is left zeroed, wildcard value */
|
||||||
mgmt->u.action.category = WLAN_CATEGORY_MESH_PLINK;
|
mgmt->u.action.category = WLAN_CATEGORY_MESH_ACTION;
|
||||||
mgmt->u.action.u.plink_action.action_code = action;
|
mgmt->u.action.u.plink_action.action_code = action;
|
||||||
|
|
||||||
if (action == PLINK_CLOSE)
|
if (action == PLINK_CLOSE)
|
||||||
|
|
|
@ -495,8 +495,11 @@ ieee80211_rx_mesh_check(struct ieee80211_rx_data *rx)
|
||||||
return RX_DROP_MONITOR;
|
return RX_DROP_MONITOR;
|
||||||
|
|
||||||
if (ieee80211_is_action(hdr->frame_control)) {
|
if (ieee80211_is_action(hdr->frame_control)) {
|
||||||
|
u8 category;
|
||||||
mgmt = (struct ieee80211_mgmt *)hdr;
|
mgmt = (struct ieee80211_mgmt *)hdr;
|
||||||
if (mgmt->u.action.category != WLAN_CATEGORY_MESH_PLINK)
|
category = mgmt->u.action.category;
|
||||||
|
if (category != WLAN_CATEGORY_MESH_ACTION &&
|
||||||
|
category != WLAN_CATEGORY_SELF_PROTECTED)
|
||||||
return RX_DROP_MONITOR;
|
return RX_DROP_MONITOR;
|
||||||
return RX_CONTINUE;
|
return RX_CONTINUE;
|
||||||
}
|
}
|
||||||
|
@ -2205,7 +2208,7 @@ ieee80211_rx_h_action(struct ieee80211_rx_data *rx)
|
||||||
goto handled;
|
goto handled;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case WLAN_CATEGORY_MESH_PLINK:
|
case WLAN_CATEGORY_MESH_ACTION:
|
||||||
if (!ieee80211_vif_is_mesh(&sdata->vif))
|
if (!ieee80211_vif_is_mesh(&sdata->vif))
|
||||||
break;
|
break;
|
||||||
goto queue;
|
goto queue;
|
||||||
|
|
Loading…
Reference in New Issue