diff options
author | Todd Poynter <tpoynter@nvidia.com> | 2014-01-14 13:14:09 -0600 |
---|---|---|
committer | Riham Haidar <rhaidar@nvidia.com> | 2014-01-24 15:01:23 -0800 |
commit | 7efc53950dbdbda13b0b4f7b8fe9a30ff4ed2e8f (patch) | |
tree | 3db79aaa62d662dd273375dfb4702bcfd6bfd1ef /drivers | |
parent | 639ef18057a2df62d5fb5c6a39354aba454aee7b (diff) |
staging: ozwpan: Add udev event to userspace.
Update from ATMEL to send an event to userspace to
indicate that a device has entered or resumed from
sleep.
Bug 1394137.
Bug 1421799.
Change-Id: I25b02bd8ae8a01a52d28b8254fbc43401c0f9463
Signed-off-by: Todd Poynter <tpoynter@nvidia.com>
Reviewed-on: http://git-master/r/357851
(cherry picked from commit 94dac510078f3cfe817fc5132114b8a64dd7f965)
Reviewed-on: http://git-master/r/358907
Reviewed-by: Jean Huang <jeanh@nvidia.com>
Tested-by: Jean Huang <jeanh@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/staging/ozwpan/ozmain.c | 2 | ||||
-rw-r--r-- | drivers/staging/ozwpan/ozpd.c | 7 | ||||
-rw-r--r-- | drivers/staging/ozwpan/ozproto.c | 11 |
3 files changed, 18 insertions, 2 deletions
diff --git a/drivers/staging/ozwpan/ozmain.c b/drivers/staging/ozwpan/ozmain.c index 61b83f86ef63..8bb7d67da4b6 100644 --- a/drivers/staging/ozwpan/ozmain.c +++ b/drivers/staging/ozwpan/ozmain.c @@ -51,6 +51,6 @@ module_exit(ozwpan_exit); MODULE_AUTHOR("Chris Kelly"); MODULE_DESCRIPTION("Ozmo Devices USB over WiFi hcd driver"); -MODULE_VERSION("1.2.3-rc9"); +MODULE_VERSION("1.2.3-rc10"); MODULE_LICENSE("GPL"); diff --git a/drivers/staging/ozwpan/ozpd.c b/drivers/staging/ozwpan/ozpd.c index e9a3de041b8c..a99d0b49b45f 100644 --- a/drivers/staging/ozwpan/ozpd.c +++ b/drivers/staging/ozwpan/ozpd.c @@ -371,6 +371,12 @@ int oz_pd_sleep(struct oz_pd *pd) { int do_stop = 0; u16 stop_apps = 0; + char mac_buf[20]; + char *envp[2]; + + snprintf(mac_buf, sizeof(mac_buf), "ID_MAC=%pm", pd->mac_addr); + envp[0] = mac_buf; + envp[1] = NULL; oz_polling_lock_bh(); if (pd->state & (OZ_PD_S_SLEEP | OZ_PD_S_STOPPED)) { oz_polling_unlock_bh(); @@ -380,6 +386,7 @@ int oz_pd_sleep(struct oz_pd *pd) if (pd->keep_alive >= OZ_KALIVE_INFINITE) oz_pd_indicate_farewells(pd); oz_pd_set_state(pd, OZ_PD_S_SLEEP); + kobject_uevent_env(&g_oz_wpan_dev->kobj, KOBJ_CHANGE, envp); } else { do_stop = 1; } diff --git a/drivers/staging/ozwpan/ozproto.c b/drivers/staging/ozwpan/ozproto.c index c116e5250f6b..cbb1335f3ce1 100644 --- a/drivers/staging/ozwpan/ozproto.c +++ b/drivers/staging/ozwpan/ozproto.c @@ -348,8 +348,17 @@ static void oz_rx_frame(struct sk_buff *skb) pd = oz_pd_find(src_addr); if (pd) { - if (!(pd->state & OZ_PD_S_CONNECTED)) + if (!(pd->state & OZ_PD_S_CONNECTED)) { + char mac_buf[20]; + char *envp[2]; + snprintf(mac_buf, sizeof(mac_buf), "ID_MAC=%pm", + pd->mac_addr); + envp[0] = mac_buf; + envp[1] = NULL; oz_pd_set_state(pd, OZ_PD_S_CONNECTED); + kobject_uevent_env(&g_oz_wpan_dev->kobj, KOBJ_CHANGE, + envp); + } getnstimeofday(¤t_time); if ((current_time.tv_sec != pd->last_rx_timestamp.tv_sec) || (pd->presleep < MSEC_PER_SEC)) { |