On Fri, 2012-11-16 at 22:47 -0800, Marco Porsch wrote: > --- a/net/mac80211/mesh.h > +++ b/net/mac80211/mesh.h > @@ -30,6 +30,7 @@ enum mesh_config_capab_flags { > MESHCONF_CAPAB_ACCEPT_PLINKS = BIT(0), > MESHCONF_CAPAB_FORWARDING = BIT(3), > MESHCONF_CAPAB_TBTT_ADJUSTING = BIT(5), > + MESHCONF_CAPAB_POWER_SAVE_LEVEL = BIT(6), Please move this entire enum to ieee80211.h first (in a separate patch). It should also be u16 values and be put into the frame as a u16, since the field is a u16 field apparently. (yes, it's a bit harsh to demand this of you, but since we don't have a mesh maintainer who's cleaning up that code ...) > +void ieee80211_set_mesh_ps_flags(struct ieee80211_sub_if_data *sdata, > + struct sta_info *sta, > + struct ieee80211_hdr *hdr) > +{ > + enum nl80211_mesh_power_mode pm; > + __le16 *qc; > + > + BUG_ON(is_unicast_ether_addr(hdr->addr1) && > + ieee80211_is_data_qos(hdr->frame_control) && > + !sta); NACK. > +++ b/net/mac80211/wme.c > @@ -184,7 +184,18 @@ void ieee80211_set_qos_hdr(struct ieee80211_sub_if_data *sdata, > > /* qos header is 2 bytes */ > *p++ = ack_policy | tid; > - *p = ieee80211_vif_is_mesh(&sdata->vif) ? > - (IEEE80211_QOS_CTL_MESH_CONTROL_PRESENT >> 8) : 0; > + > + if (!ieee80211_vif_is_mesh(&sdata->vif)) { > + *p = 0; > + return; I'd rather you refactor the function to return early in the case of the frame not being a Data QoS frame, and then put the mesh stuff all inside the if. johannes -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html