mirror of
https://github.com/torvalds/linux.git
synced 2024-11-27 06:31:52 +00:00
batman-adv: move batadv_slide_own_bcast_window to bat_iv_ogm.c
batadv_slide_own_bcast_window() is used only in bat_iv_ogm.c and it is currently touching only batman_iv specific attributes. Move it into bat_iv_ogm.c and make it static. Signed-off-by: Antonio Quartulli <antonio@open-mesh.com> Signed-off-by: Marek Lindner <lindner_marek@yahoo.de>
This commit is contained in:
parent
24a5deeb8a
commit
d989661732
@ -630,6 +630,41 @@ static void batadv_iv_ogm_forward(struct batadv_orig_node *orig_node,
|
||||
if_incoming, 0, batadv_iv_ogm_fwd_send_time());
|
||||
}
|
||||
|
||||
/**
|
||||
* batadv_iv_ogm_slide_own_bcast_window - bitshift own OGM broadcast windows for
|
||||
* the given interface
|
||||
* @hard_iface: the interface for which the windows have to be shifted
|
||||
*/
|
||||
static void
|
||||
batadv_iv_ogm_slide_own_bcast_window(struct batadv_hard_iface *hard_iface)
|
||||
{
|
||||
struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
|
||||
struct batadv_hashtable *hash = bat_priv->orig_hash;
|
||||
struct hlist_head *head;
|
||||
struct batadv_orig_node *orig_node;
|
||||
unsigned long *word;
|
||||
uint32_t i;
|
||||
size_t word_index;
|
||||
uint8_t *w;
|
||||
|
||||
for (i = 0; i < hash->size; i++) {
|
||||
head = &hash->table[i];
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(orig_node, head, hash_entry) {
|
||||
spin_lock_bh(&orig_node->ogm_cnt_lock);
|
||||
word_index = hard_iface->if_num * BATADV_NUM_WORDS;
|
||||
word = &(orig_node->bcast_own[word_index]);
|
||||
|
||||
batadv_bit_get_packet(bat_priv, word, 1, 0);
|
||||
w = &orig_node->bcast_own_sum[hard_iface->if_num];
|
||||
*w = bitmap_weight(word, BATADV_TQ_LOCAL_WINDOW_SIZE);
|
||||
spin_unlock_bh(&orig_node->ogm_cnt_lock);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
|
||||
{
|
||||
struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
|
||||
@ -674,7 +709,7 @@ static void batadv_iv_ogm_schedule(struct batadv_hard_iface *hard_iface)
|
||||
batadv_ogm_packet->gw_flags = BATADV_NO_FLAGS;
|
||||
}
|
||||
|
||||
batadv_slide_own_bcast_window(hard_iface);
|
||||
batadv_iv_ogm_slide_own_bcast_window(hard_iface);
|
||||
batadv_iv_ogm_queue_add(bat_priv, hard_iface->bat_iv.ogm_buff,
|
||||
hard_iface->bat_iv.ogm_buff_len, hard_iface, 1,
|
||||
batadv_iv_ogm_emit_send_time(bat_priv));
|
||||
|
@ -34,35 +34,6 @@
|
||||
static int batadv_route_unicast_packet(struct sk_buff *skb,
|
||||
struct batadv_hard_iface *recv_if);
|
||||
|
||||
void batadv_slide_own_bcast_window(struct batadv_hard_iface *hard_iface)
|
||||
{
|
||||
struct batadv_priv *bat_priv = netdev_priv(hard_iface->soft_iface);
|
||||
struct batadv_hashtable *hash = bat_priv->orig_hash;
|
||||
struct hlist_head *head;
|
||||
struct batadv_orig_node *orig_node;
|
||||
unsigned long *word;
|
||||
uint32_t i;
|
||||
size_t word_index;
|
||||
uint8_t *w;
|
||||
|
||||
for (i = 0; i < hash->size; i++) {
|
||||
head = &hash->table[i];
|
||||
|
||||
rcu_read_lock();
|
||||
hlist_for_each_entry_rcu(orig_node, head, hash_entry) {
|
||||
spin_lock_bh(&orig_node->ogm_cnt_lock);
|
||||
word_index = hard_iface->if_num * BATADV_NUM_WORDS;
|
||||
word = &(orig_node->bcast_own[word_index]);
|
||||
|
||||
batadv_bit_get_packet(bat_priv, word, 1, 0);
|
||||
w = &orig_node->bcast_own_sum[hard_iface->if_num];
|
||||
*w = bitmap_weight(word, BATADV_TQ_LOCAL_WINDOW_SIZE);
|
||||
spin_unlock_bh(&orig_node->ogm_cnt_lock);
|
||||
}
|
||||
rcu_read_unlock();
|
||||
}
|
||||
}
|
||||
|
||||
static void _batadv_update_route(struct batadv_priv *bat_priv,
|
||||
struct batadv_orig_node *orig_node,
|
||||
struct batadv_neigh_node *neigh_node)
|
||||
|
@ -20,7 +20,6 @@
|
||||
#ifndef _NET_BATMAN_ADV_ROUTING_H_
|
||||
#define _NET_BATMAN_ADV_ROUTING_H_
|
||||
|
||||
void batadv_slide_own_bcast_window(struct batadv_hard_iface *hard_iface);
|
||||
bool batadv_check_management_packet(struct sk_buff *skb,
|
||||
struct batadv_hard_iface *hard_iface,
|
||||
int header_len);
|
||||
|
Loading…
Reference in New Issue
Block a user