Staging: batman-adv: Make hop_penalty configurable via sysfs
[cascardo/linux.git] / drivers / staging / batman-adv / send.c
index 7adf76d..1489b6c 100644 (file)
 static void send_outstanding_bcast_packet(struct work_struct *work);
 
 /* apply hop penalty for a normal link */
-static uint8_t hop_penalty(const uint8_t tq)
+static uint8_t hop_penalty(const uint8_t tq, struct bat_priv *bat_priv)
 {
-       return (tq * (TQ_MAX_VALUE - TQ_HOP_PENALTY)) / (TQ_MAX_VALUE);
+       int hop_penalty = atomic_read(&bat_priv->hop_penalty);
+       return (tq * (TQ_MAX_VALUE - hop_penalty)) / (TQ_MAX_VALUE);
 }
 
 /* when do we schedule our own packet to be sent */
@@ -330,7 +331,7 @@ void schedule_forward_packet(struct orig_node *orig_node,
        }
 
        /* apply hop penalty */
-       batman_packet->tq = hop_penalty(batman_packet->tq);
+       batman_packet->tq = hop_penalty(batman_packet->tq, bat_priv);
 
        bat_dbg(DBG_BATMAN, bat_priv,
                "Forwarding packet: tq_orig: %i, tq_avg: %i, "