On Dienstag, 4. September 2018 12:34:35 CEST Sven Eckelmann wrote: [...]
Although Antonio explained in the previous email, "... if you have no data over the link, sending 2 probes of 200bytes each every 500ms (default ELP interval) won't really eat much airtime, unless you have a lot of idling 1-hop neighbours", I think the ELP probe packets will occupy much wifi airtime, because wlan is working on the SHARED media. The transmission of ELP probe packets between idle 1-hop neighbours can be heard by the other nodes and their transmission have to be delayed. Consequently, the performance, delay and throughput, could be lowered down, compared to batman-adv 4.
@Antonio, you must also keep in mind that the RTS + CTS frames are transmitted at the lowest available rate (1Mbit/s in this case). The Ack is done with 6Mbit/s in his dump. The broadcast is done with 18Mbit/s. The unicast stuff seems to be send with MCS rates.
[...]
Maybe Marek is also interested in disabling the RTS for fallback rates on all devices. The rts stuff is injected by minstrel_ht and can most likely be disabled using:
--- a/net/mac80211/rc80211_minstrel_ht.c +++ b/net/mac80211/rc80211_minstrel_ht.c @@ -853,12 +853,12 @@ minstrel_ht_set_rate(struct minstrel_priv *mp, struct minstrel_ht_sta *mi, * - if station is in dynamic SMPS (and streams > 1) * - for fallback rates, to increase chances of getting through */ - if (offset > 0 || + /* if (offset > 0 || (mi->sta->smps_mode == IEEE80211_SMPS_DYNAMIC && group->streams > 1)) { ratetbl->rate[offset].count = ratetbl->rate[offset].count_rts; flags |= IEEE80211_TX_RC_USE_RTS_CTS; - } + }*/
ratetbl->rate[offset].idx = idx; ratetbl->rate[offset].flags = flags;
(I hope this is ported correctly - his original patch was for an older version and thus looked slightly different)
What also could be interesting, would be to change consistently the 802.1d priority (0-7) of the ELP probe packets on each device from 0 to something else. This could for example be done with:
--- a/net/batman-adv/bat_v_elp.c +++ b/net/batman-adv/bat_v_elp.c @@ -230,6 +230,8 @@ batadv_v_elp_wifi_neigh_probe(struct batadv_hardif_neigh_node *neigh) BATADV_ELP_MIN_PROBE_SIZE);
for (i = 0; i < BATADV_ELP_PROBES_PER_NODE; i++) { + u8 prio_802_1d = 0; + elp_skb_len = hard_iface->bat_v.elp_skb->len; skb = skb_copy_expand(hard_iface->bat_v.elp_skb, 0, probe_len - elp_skb_len, @@ -242,6 +244,7 @@ batadv_v_elp_wifi_neigh_probe(struct batadv_hardif_neigh_node *neigh) * throughput estimation effective. */ skb_put_zero(skb, probe_len - hard_iface->bat_v.elp_skb->len); + skb->priority = 256 + prio_802_1d;
batadv_dbg(BATADV_DBG_BATMAN, bat_priv, "Sending unicast (probe) ELP packet on interface %s to %pM\n",
The TID in the QoS packets should change accordingly.
The default mapping for these prio_802_1d values can be found in https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/net/ma...
Kind regards, Sven