greybus: connection: add name field
authorJohan Hovold <johan@hovoldconsulting.com>
Wed, 25 Nov 2015 14:59:14 +0000 (15:59 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Wed, 25 Nov 2015 23:34:19 +0000 (15:34 -0800)
Add a name field to connections that can be used in log messages.

A connection always belongs to a host-device (bus) and can be uniquely
identified by its host-device cport id, but include remote interface and
cport id nonetheless on the following format:

<hd_cport_id>/<intf_id>:<cport_id>

The remote interface and cport id will be zero for static connections.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/connection.c
drivers/staging/greybus/connection.h

index 3f2fe01035472c8057e670414a4982594ff29900..65d72b81ea8ea5aebd936a32c028c096cdb76491 100644 (file)
@@ -95,6 +95,21 @@ int svc_update_connection(struct gb_interface *intf,
        return 0;
 }
 
+static void gb_connection_init_name(struct gb_connection *connection)
+{
+       u16 hd_cport_id = connection->hd_cport_id;
+       u16 cport_id = 0;
+       u8 intf_id = 0;
+
+       if (connection->intf) {
+               intf_id = connection->intf->interface_id;
+               cport_id = connection->intf_cport_id;
+       }
+
+       snprintf(connection->name, sizeof(connection->name),
+                       "%hu/%hhu:%hu", hd_cport_id, intf_id, cport_id);
+}
+
 /*
  * gb_connection_create() - create a Greybus connection
  * @hd:                        host device of the connection
@@ -179,6 +194,8 @@ gb_connection_create(struct gb_host_device *hd, int hd_cport_id,
 
        kref_init(&connection->kref);
 
+       gb_connection_init_name(connection);
+
        spin_lock_irq(&gb_connections_lock);
        list_add(&connection->hd_links, &hd->connections);
 
index 446ffe157a12cdab054061319ad80983fe9dd28e..028f278b77e0085e3341b4896c5da47cdb123a6a 100644 (file)
@@ -43,6 +43,7 @@ struct gb_connection {
        enum gb_connection_state        state;
        struct list_head                operations;
 
+       char                            name[16];
        struct workqueue_struct         *wq;
 
        atomic_t                        op_cycle;