Thread (95 messages) 95 messages, 9 authors, 2008-12-04

Re: [PATCH 08/39] wimax: Mappping of generic netlink family IDs to net devices

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2008-11-27 09:48:07

On Wed, 2008-11-26 at 15:07 -0800, Inaky Perez-Gonzalez wrote:
+/*
+ * wimax_get_netdev_by_info - lookup a wimax_dev from the gennetlink info
+ *
+ * The generic netlink family ID has been filled out in the
+ * nlmsghdr->nlmsg_type field, so we pull it from there, look it up in
+ * the mapping table and reference the wimax_dev.
+ *
+ * When done, the reference should be dropped with
+ * 'dev_put(wimax_dev->net_dev)'.
+ */
+struct wimax_dev *wimax_dev_get_by_genl_info(struct genl_info *info)
+{
+	struct wimax_dev *wimax_dev;
= NULL;
+	int id = info->nlhdr->nlmsg_type;
+
+	d_fnstart(3, NULL, "(info %p [id %d])\n", info, id);
+	spin_lock(&wimax_id_table_lock);
+	list_for_each_entry(wimax_dev, &wimax_id_table, id_table_node) {
+		if (wimax_dev->gnl_family.id == id) {
+			dev_hold(wimax_dev->net_dev);
+			goto out_unlock;
break;
+		}
+	}
+	d_printf(1, NULL, "wimax: no device associated to ID %d\n", id);
remove debug statement (or make it depend on !wimax_dev)
+	wimax_dev = NULL;
+out_unlock:
+	spin_unlock(&wimax_id_table_lock);
+	d_fnend(3, NULL, "(info %p) = %p\n", info, wimax_dev);
+	return wimax_dev;
No need for gotos any more :)

johannes

Attachments

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help