Skip to content

Commit

Permalink
Staging: batman-adv: move queue counters into bat_priv
Browse files Browse the repository at this point in the history
to support multiple mesh devices later, we need to move global variables
like the queues into corresponding private structs bat_priv of the soft
devices.

Note that this patch still has a lot of FIXMEs and depends on the global
soft_device variable. This should be resolved later, e.g. by referencing
the parent soft device in batman_if.

Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
[sven.eckelmann@gmx.de: Rework on top of current version]
Signed-off-by: Sven Eckelmann <sven.eckelmann@gmx.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Simon Wunderlich authored and Greg Kroah-Hartman committed Sep 5, 2010
1 parent 8bb22a3 commit 7d02674
Show file tree
Hide file tree
Showing 6 changed files with 15 additions and 15 deletions.
6 changes: 3 additions & 3 deletions drivers/staging/batman-adv/aggregation.c
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ static void new_aggregated_packet(unsigned char *packet_buff,

/* own packet should always be scheduled */
if (!own_packet) {
if (!atomic_dec_not_zero(&batman_queue_left)) {
if (!atomic_dec_not_zero(&bat_priv->batman_queue_left)) {
bat_dbg(DBG_BATMAN, bat_priv,
"batman packet queue full\n");
return;
Expand All @@ -121,15 +121,15 @@ static void new_aggregated_packet(unsigned char *packet_buff,
forw_packet_aggr = kmalloc(sizeof(struct forw_packet), GFP_ATOMIC);
if (!forw_packet_aggr) {
if (!own_packet)
atomic_inc(&batman_queue_left);
atomic_inc(&bat_priv->batman_queue_left);
return;
}

forw_packet_aggr->packet_buff = kmalloc(MAX_AGGREGATION_BYTES,
GFP_ATOMIC);
if (!forw_packet_aggr->packet_buff) {
if (!own_packet)
atomic_inc(&batman_queue_left);
atomic_inc(&bat_priv->batman_queue_left);
kfree(forw_packet_aggr);
return;
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/staging/batman-adv/bat_sysfs.c
Original file line number Diff line number Diff line change
Expand Up @@ -311,6 +311,8 @@ int sysfs_add_meshif(struct net_device *dev)
atomic_set(&bat_priv->vis_mode, VIS_TYPE_CLIENT_UPDATE);
atomic_set(&bat_priv->orig_interval, 1000);
atomic_set(&bat_priv->log_level, 0);
atomic_set(&bat_priv->bcast_queue_left, BCAST_QUEUE_LEN);
atomic_set(&bat_priv->batman_queue_left, BATMAN_QUEUE_LEN);

bat_priv->primary_if = NULL;
bat_priv->num_ifaces = 0;
Expand Down
6 changes: 0 additions & 6 deletions drivers/staging/batman-adv/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ DEFINE_SPINLOCK(orig_hash_lock);
DEFINE_SPINLOCK(forw_bat_list_lock);
DEFINE_SPINLOCK(forw_bcast_list_lock);

atomic_t bcast_queue_left;
atomic_t batman_queue_left;

int16_t num_hna;

struct net_device *soft_device;
Expand All @@ -69,9 +66,6 @@ static int __init batman_init(void)

atomic_set(&module_state, MODULE_INACTIVE);

atomic_set(&bcast_queue_left, BCAST_QUEUE_LEN);
atomic_set(&batman_queue_left, BATMAN_QUEUE_LEN);

/* the name should not be longer than 10 chars - see
* http://lwn.net/Articles/23634/ */
bat_event_workqueue = create_singlethread_workqueue("bat_events");
Expand Down
2 changes: 0 additions & 2 deletions drivers/staging/batman-adv/main.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,6 @@ extern spinlock_t orig_hash_lock;
extern spinlock_t forw_bat_list_lock;
extern spinlock_t forw_bcast_list_lock;

extern atomic_t bcast_queue_left;
extern atomic_t batman_queue_left;
extern int16_t num_hna;

extern struct net_device *soft_device;
Expand Down
12 changes: 8 additions & 4 deletions drivers/staging/batman-adv/send.c
Original file line number Diff line number Diff line change
Expand Up @@ -404,7 +404,7 @@ int add_bcast_packet_to_list(struct sk_buff *skb)
/* FIXME: each batman_if will be attached to a softif */
struct bat_priv *bat_priv = netdev_priv(soft_device);

if (!atomic_dec_not_zero(&bcast_queue_left)) {
if (!atomic_dec_not_zero(&bat_priv->bcast_queue_left)) {
bat_dbg(DBG_BATMAN, bat_priv, "bcast packet queue full\n");
goto out;
}
Expand Down Expand Up @@ -436,7 +436,7 @@ int add_bcast_packet_to_list(struct sk_buff *skb)
packet_free:
kfree(forw_packet);
out_and_inc:
atomic_inc(&bcast_queue_left);
atomic_inc(&bat_priv->bcast_queue_left);
out:
return NETDEV_TX_BUSY;
}
Expand All @@ -450,6 +450,8 @@ static void send_outstanding_bcast_packet(struct work_struct *work)
container_of(delayed_work, struct forw_packet, delayed_work);
unsigned long flags;
struct sk_buff *skb1;
/* FIXME: each batman_if will be attached to a softif */
struct bat_priv *bat_priv = netdev_priv(soft_device);

spin_lock_irqsave(&forw_bcast_list_lock, flags);
hlist_del(&forw_packet->list);
Expand Down Expand Up @@ -479,7 +481,7 @@ static void send_outstanding_bcast_packet(struct work_struct *work)

out:
forw_packet_free(forw_packet);
atomic_inc(&bcast_queue_left);
atomic_inc(&bat_priv->bcast_queue_left);
}

void send_outstanding_bat_packet(struct work_struct *work)
Expand All @@ -489,6 +491,8 @@ void send_outstanding_bat_packet(struct work_struct *work)
struct forw_packet *forw_packet =
container_of(delayed_work, struct forw_packet, delayed_work);
unsigned long flags;
/* FIXME: each batman_if will be attached to a softif */
struct bat_priv *bat_priv = netdev_priv(soft_device);

spin_lock_irqsave(&forw_bat_list_lock, flags);
hlist_del(&forw_packet->list);
Expand All @@ -510,7 +514,7 @@ void send_outstanding_bat_packet(struct work_struct *work)
out:
/* don't count own packet */
if (!forw_packet->own)
atomic_inc(&batman_queue_left);
atomic_inc(&bat_priv->batman_queue_left);

forw_packet_free(forw_packet);
}
Expand Down
2 changes: 2 additions & 0 deletions drivers/staging/batman-adv/types.h
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,8 @@ struct bat_priv {
atomic_t vis_mode;
atomic_t orig_interval;
atomic_t log_level;
atomic_t bcast_queue_left;
atomic_t batman_queue_left;
char num_ifaces;
struct debug_log *debug_log;
struct batman_if *primary_if;
Expand Down

0 comments on commit 7d02674

Please sign in to comment.