summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlok Barsode <alok.barsode@nokia.com>2011-02-08 15:03:41 +0200
committerSamuel Ortiz <sameo@linux.intel.com>2011-02-08 15:43:49 +0100
commit7366bfe715619c5d9217bdd1d7f4be08194764cf (patch)
treef356efde5dfc03fe973a29b6c4ef1559f3f123dc
parentda3ca88cb1d6a74fb05999a31c11dc5bde383dfe (diff)
downloadconnman-7366bfe715619c5d9217bdd1d7f4be08194764cf.tar.gz
connman-7366bfe715619c5d9217bdd1d7f4be08194764cf.tar.bz2
connman-7366bfe715619c5d9217bdd1d7f4be08194764cf.zip
technology: Optimize __connman_technology_add_interface()
Instead of looping through the technology_list, using the technology pointer returned by technology_get().
-rw-r--r--src/technology.c21
1 files changed, 7 insertions, 14 deletions
diff --git a/src/technology.c b/src/technology.c
index 5ef3d10e..0a89b1a5 100644
--- a/src/technology.c
+++ b/src/technology.c
@@ -547,7 +547,7 @@ static void technology_put(struct connman_technology *technology)
void __connman_technology_add_interface(enum connman_service_type type,
int index, const char *name, const char *ident)
{
- GSList *list;
+ struct connman_technology *technology;
switch (type) {
case CONNMAN_SERVICE_TYPE_UNKNOWN:
@@ -567,21 +567,14 @@ void __connman_technology_add_interface(enum connman_service_type type,
connman_info("Create interface %s [ %s ]", name,
__connman_service_type2string(type));
- technology_get(type);
-
- for (list = technology_list; list; list = list->next) {
- struct connman_technology *technology = list->data;
-
- if (technology->type != type)
- continue;
+ technology = technology_get(type);
- if (technology->driver == NULL)
- continue;
+ if (technology == NULL || technology->driver == NULL
+ || technology->driver->add_interface == NULL)
+ return;
- if (technology->driver->add_interface)
- technology->driver->add_interface(technology,
- index, name, ident);
- }
+ technology->driver->add_interface(technology,
+ index, name, ident);
}
void __connman_technology_remove_interface(enum connman_service_type type,