Skip to main content
patch "drivers:staging:ozwpan Replaced wrapper functions with actual spin" added to staging tree
1 message

gregkh@linuxfoundation.org <gregkh@linuxfoundation.org>Tue, Mar 4, 2014 at 4:50 PM
To: surendra.tux@gmail.com, gregkh@linuxfoundation.org, rupesh.gujare@atmel.com

This is a note to let you know that I've just added the patch titled

    drivers:staging:ozwpan Replaced wrapper functions with actual spin

to my staging git tree which can be found at
    git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
in the staging-next branch.

The patch will show up in the next release of the linux-next tree
(usually sometime within the next 24 hours during the week.)

The patch will also be merged in the next major kernel release
during the merge window.

If you have any questions about this process, please let me know.


From 6b029336d93d8f9a94b0256b1f7d9c1768eedba7 Mon Sep 17 00:00:00 2001
From: Surendra Patil <surendra.tux@gmail.com>
Date: Mon, 3 Mar 2014 23:57:47 -0800
Subject: drivers:staging:ozwpan Replaced wrapper functions with actual spin
 lock function

* Replaced all the spin lock/unlock wrappers from oz_polling_lock_bh()
and oz_polllin_unlock_bh() with spin_lock_bh(&g_polling_lock) and
spin_unlock_bh(&g_polling_lock).Completely erased the wrappers defination
and declaration.
* declared g_polling_lock as global variable in header file and added comments to it.
Module builded successfully with sparse without warnings.

Signed-off-by: Surendra Patil <surendra.tux@gmail.com>
Acked-by: Rupesh Gujare <rupesh.gujare@atmel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
---
 drivers/staging/ozwpan/ozpd.c    | 28 ++++++++++++++--------------
 drivers/staging/ozwpan/ozpd.h    |  5 +++++
 drivers/staging/ozwpan/ozproto.c | 15 +++++----------
 drivers/staging/ozwpan/ozproto.h |  2 --
 4 files changed, 24 insertions(+), 26 deletions(-)

diff --git a/drivers/staging/ozwpan/ozpd.c b/drivers/staging/ozwpan/ozpd.c
index 743695077346..29a23a325d71 100644
--- a/drivers/staging/ozwpan/ozpd.c
+++ b/drivers/staging/ozwpan/ozpd.c
@@ -284,11 +284,11 @@ int oz_services_start(struct oz_pd *pd, u16 apps, int resume)
                                          ai->app_id);
                                break;
                        }
-                       oz_polling_lock_bh();
+                       spin_lock_bh(&g_polling_lock);
                        pd->total_apps |= (1<<ai->app_id);
                        if (resume)
                                pd->paused_apps &= ~(1<<ai->app_id);
-                       oz_polling_unlock_bh();
+                       spin_unlock_bh(&g_polling_lock);
                }
        }
        return rc;
@@ -304,14 +304,14 @@ void oz_services_stop(struct oz_pd *pd, u16 apps, int pause)
        oz_pd_dbg(pd, ON, "%s: (0x%x) pause(%d)\n", __func__, apps, pause);
        for (ai = g_app_if; ai < &g_app_if[OZ_APPID_MAX]; ai++) {
                if (apps & (1<<ai->app_id)) {
-                       oz_polling_lock_bh();
+                       spin_lock_bh(&g_polling_lock);
                        if (pause) {
                                pd->paused_apps |= (1<<ai->app_id);
                        } else {
                                pd->total_apps &= ~(1<<ai->app_id);
                                pd->paused_apps &= ~(1<<ai->app_id);
                        }
-                       oz_polling_unlock_bh();
+                       spin_unlock_bh(&g_polling_lock);
                        ai->stop(pd, pause);
                }
        }
@@ -349,17 +349,17 @@ void oz_pd_stop(struct oz_pd *pd)

        oz_dbg(ON, "oz_pd_stop() State = 0x%x\n", pd->state);
        oz_pd_indicate_farewells(pd);
-       oz_polling_lock_bh();
+       spin_lock_bh(&g_polling_lock);
        stop_apps = pd->total_apps;
        pd->total_apps = 0;
        pd->paused_apps = 0;
-       oz_polling_unlock_bh();
+       spin_unlock_bh(&g_polling_lock);
        oz_services_stop(pd, stop_apps, 0);
-       oz_polling_lock_bh();
+       spin_lock_bh(&g_polling_lock);
        oz_pd_set_state(pd, OZ_PD_S_STOPPED);
        /* Remove from PD list.*/
        list_del(&pd->link);
-       oz_polling_unlock_bh();
+       spin_unlock_bh(&g_polling_lock);
        oz_dbg(ON, "pd ref count = %d\n", atomic_read(&pd->ref_count));
        oz_pd_put(pd);
 }
@@ -372,9 +372,9 @@ int oz_pd_sleep(struct oz_pd *pd)
        int do_stop = 0;
        u16 stop_apps;

-       oz_polling_lock_bh();
+       spin_lock_bh(&g_polling_lock);
        if (pd->state & (OZ_PD_S_SLEEP | OZ_PD_S_STOPPED)) {
-               oz_polling_unlock_bh();
+               spin_unlock_bh(&g_polling_lock);
                return 0;
        }
        if (pd->keep_alive && pd->session_id)
@@ -383,7 +383,7 @@ int oz_pd_sleep(struct oz_pd *pd)
                do_stop = 1;

        stop_apps = pd->total_apps;
-       oz_polling_unlock_bh();
+       spin_unlock_bh(&g_polling_lock);
        if (do_stop) {
                oz_pd_stop(pd);
        } else {
@@ -999,15 +999,15 @@ void oz_pd_indicate_farewells(struct oz_pd *pd)
        const struct oz_app_if *ai = &g_app_if[OZ_APPID_USB-1];

        while (1) {
-               oz_polling_lock_bh();
+               spin_lock_bh(&g_polling_lock);
                if (list_empty(&pd->farewell_list)) {
-                       oz_polling_unlock_bh();
+                       spin_unlock_bh(&g_polling_lock);
                        break;
                }
                f = list_first_entry(&pd->farewell_list,
                                struct oz_farewell, link);
                list_del(&f->link);
-               oz_polling_unlock_bh();
+               spin_unlock_bh(&g_polling_lock);
                if (ai->farewell)
                        ai->farewell(pd, f->ep_num, f->report, f->len);
                kfree(f);
diff --git a/drivers/staging/ozwpan/ozpd.h b/drivers/staging/ozwpan/ozpd.h
index 12c712956888..56e6fdf9b0bf 100644
--- a/drivers/staging/ozwpan/ozpd.h
+++ b/drivers/staging/ozwpan/ozpd.h
@@ -22,6 +22,11 @@
 #define OZ_TIMER_HEARTBEAT     2
 #define OZ_TIMER_STOP          3

+/*
+ *External spinlock variable
+ */
+extern spinlock_t g_polling_lock;
+
 /* Data structure that hold information on a frame for transmisson. This is
  * built when the frame is first transmitted and is used to rebuild the frame
  * if a re-transmission is required.
diff --git a/drivers/staging/ozwpan/ozproto.c b/drivers/staging/ozwpan/ozproto.c
index e7138ed325dd..c1325a67d320 100644
--- a/drivers/staging/ozwpan/ozproto.c
+++ b/drivers/staging/ozwpan/ozproto.c
@@ -38,9 +38,13 @@ struct oz_binding {
 };

 /*
+ * External variable
+ */
+
+DEFINE_SPINLOCK(g_polling_lock);
+/*
  * Static external variables.
  */
-static DEFINE_SPINLOCK(g_polling_lock);
 static LIST_HEAD(g_pd_list);
 static LIST_HEAD(g_binding);
 static DEFINE_SPINLOCK(g_binding_lock);
@@ -794,12 +798,3 @@ int oz_get_pd_list(struct oz_mac_addr *addr, int max_count)
        return count;
 }

-void oz_polling_lock_bh(void)
-{
-       spin_lock_bh(&g_polling_lock);
-}
-
-void oz_polling_unlock_bh(void)
-{
-       spin_unlock_bh(&g_polling_lock);
-}
diff --git a/drivers/staging/ozwpan/ozproto.h b/drivers/staging/ozwpan/ozproto.h
index 0c49c8a0e815..cb38e02c968e 100644
--- a/drivers/staging/ozwpan/ozproto.h
+++ b/drivers/staging/ozwpan/ozproto.h
@@ -59,8 +59,6 @@ void oz_binding_remove(const char *net_dev);
 void oz_timer_add(struct oz_pd *pd, int type, unsigned long due_time);
 void oz_timer_delete(struct oz_pd *pd, int type);
 void oz_pd_request_heartbeat(struct oz_pd *pd);
-void oz_polling_lock_bh(void);
-void oz_polling_unlock_bh(void);
 void oz_pd_heartbeat_handler(unsigned long data);
 void oz_pd_timeout_handler(unsigned long data);
 enum hrtimer_restart oz_pd_heartbeat_event(struct hrtimer *timer);
--
1.9.0

Comments

Popular posts from this blog

Sampling and FFT Size derivation in LTE

Sampling and FFT Size derivation in LTE Ts = 1 / (15000 x 2048) seconds, which corresponds to the 30.72 MHz sample clock for the 2048 point FFT used with the 20 MHz system bandwidth. In the frequency domain, the number of sub-carriers N ranges from 128 to 2048, depending on channel bandwidth with 512 and 1024 for 5 and 10 MHz, respectively, being most commonly used in practice. The sub-carrier spacing is ∆f = 1/T u = 15 kHz. The sampling rate is fs = ∆f · N = 15000 N. This results in a sampling rate that’s multiple or sub-multiple of the WCDMA chip rate of 3.84 Mcps: LTE parameters have been chosen such that FFT lengths and sampling rates are easily obtained for all operation modes while at the same time ensuring the easy implementation of dual-mode devices with a common clock reference. Sampling frequency is Multiple's of 2, For 15 Mhz Bandwidth - Sampling Frequency = 23.04 (6 * 3.84). FFT SIZE = S

C Programming Questions – Part 1

1. W hat do curly braces denote in C? Why does it make sense to use curly brac es to surround the body of a function?   Answer: The curly braces denote a block of code, in which variables can be declared. Variables declared within the block are valid only until the end of the block, marked by the matching right curly brace ’}’. The body of a function is one such type of block, and thus, curly braces are used to describe the extent of that block . 2.Describe the difference between the literal values 7, "7", and ’7 ’ ?   Answer: The first literal is integer 7.Second literal is null terminated string value '7'.Third literal is character '7' having ASCII character code (55). 3. Consider the statement double ans = 10.0+2.0/3.0−2.0∗2.0; Rewrite this statement, inserting parentheses to ensure that ans = 11.0 upon evaluation of this statement ? Answer: double ans = 10.0+2.0/ (( 3.0−2.0 ) ∗2.0 ) ; 4 .C

C Programming Questions - Part 2

1) How do you determine the size and range of the following data types ? char unsigned char short int unsigned int unsigned long float Ans:- limits.h header file defines the minimum and maximum range macros for each of the data types , sizeof(datatype) returns the number of bytes used by the datatype in current machine. 2) Write logical expressions that tests whether a given character variable c is lowercase letter uppercase letter digit white space(includes space,tab,newline) Ans:- lowercase letter = (c >= 'a' && c <= 'z') uppercase letter = (c >= 'A' && c <= 'Z') digit = (c >= '0' && c <= '9') white space(includes space,tab,newline) = (c == ' ' || c == '\t' || c == '\n') 3) Consider unsigned int val=0xCAFE; Write expressio