On Wed, Sep 04, 2013 at 06:27:38PM +0200, Simon Wunderlich wrote: > diff --git a/bat_iv_ogm.c b/bat_iv_ogm.c > index d32b2f2..efddadf 100644 > --- a/bat_iv_ogm.c > +++ b/bat_iv_ogm.c > @@ -1085,6 +1085,7 @@ static int batadv_iv_ogm_calc_tq(struct > batadv_orig_node *orig_node, > uint8_t orig_eq_count, neigh_rq_count, neigh_rq_inv, tq_own; > unsigned int neigh_rq_inv_cube, neigh_rq_max_cube; > int tq_asym_penalty, inv_asym_penalty, if_num, ret = 0; > + int tq_iface_penalty; > unsigned int combined_tq;
please, add the new variable at the end (line length sorting). > > /* find corresponding one hop neighbor */ > @@ -1169,15 +1170,33 @@ static int batadv_iv_ogm_calc_tq(struct > batadv_orig_node *orig_node, > inv_asym_penalty /= neigh_rq_max_cube; > tq_asym_penalty = BATADV_TQ_MAX_VALUE - inv_asym_penalty; > > - combined_tq = batadv_ogm_packet->tq * tq_own * tq_asym_penalty; > - combined_tq /= BATADV_TQ_MAX_VALUE * BATADV_TQ_MAX_VALUE; > + /* penalize if the OGM is forwarded on the same interface. WiFi > + * interfaces and other half duplex devices suffer from throughput > + * drops as they can't send and receive at the same time. > + */ > + tq_iface_penalty = BATADV_TQ_MAX_VALUE; > + if (if_outgoing && (if_incoming == if_outgoing) && > + batadv_is_wifi_netdev(if_outgoing->net_dev)) > + tq_iface_penalty = batadv_hop_penalty(BATADV_TQ_MAX_VALUE, > + bat_priv); > + > + combined_tq = batadv_ogm_packet->tq * > + tq_own * > + tq_asym_penalty * > + tq_iface_penalty; > + combined_tq /= BATADV_TQ_MAX_VALUE * > + BATADV_TQ_MAX_VALUE * > + BATADV_TQ_MAX_VALUE; Mh..I am not sure about the style of these assignments...but we can live with those for now. > batadv_ogm_packet->tq = combined_tq; > > batadv_dbg(BATADV_DBG_BATMAN, bat_priv, > - "bidirectional: orig = %-15pM neigh = %-15pM => own_bcast = > %2i, real recv = %2i, local tq: %3i, asym_penalty: %3i, total tq: %3i\n", > + "bidirectional: orig = %-15pM neigh = %-15pM => own_bcast = > %2i, real recv = %2i, local tq: %3i, asym_penalty: %3i, iface_penalty: %3i, > total tq: %3i, if_incoming = %s, if_outgoing = %s\n", > orig_node->orig, orig_neigh_node->orig, total_count, > neigh_rq_count, tq_own, > - tq_asym_penalty, batadv_ogm_packet->tq); > + tq_asym_penalty, tq_iface_penalty, > + batadv_ogm_packet->tq, this one can go on the line above.. > + if_incoming ? if_incoming->net_dev->name : "NULL", > + if_outgoing ? if_outgoing->net_dev->name : "NULL"); > > /* if link has the minimum required transmission quality > * consider it bidirectional Cheers, -- Antonio Quartulli
signature.asc
Description: Digital signature
