1
0
Fork 0
Commit Graph

985 Commits (f47c1b023ee55737ab5f6b6f479cab06a5a03ba2)

Author SHA1 Message Date
Viresh Kumar f47c1b023e greybus: operation: Drop alignment attribute from operation message header
The buffers allocated for message header is already 64 bit aligned and
we have explicit pad bytes in the header structure, to 64 bit align the
operation specific data.

And so there is no need to add the aligned attribute to the operation
message header. Drop it.

Suggested-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Alex Elder <elder@linaro.org>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-08-03 19:57:40 -07:00
Johan Hovold a96493560c greybus: usb: disable protocol driver
The USB bridged-PHY protocol driver currently depends on changes to USB
core that are not yet upstream.

Disable for now.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Johan Hovold a422ecd28e greybus: usb: implement hub_control callback
Implement the hub_control callback.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Johan Hovold b1e4a1f851 greybus: usb: fix hc_driver fields
Fix hc_driver description, product_desc and flags fields.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Johan Hovold cc9bd53eb1 greybus: usb: fix hcd allocation, deregistration and deallocation
Fix allocation, deregistration and deallocation of USB HCD, and update
the hcd_priv helper functions.

The HCD private data was not allocated correctly, something which would
lead to a crash when accessed in hcd_start. The HCD was neither
reregistered or deallocated on connection tear down.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Johan Hovold 583804f713 greybus: usb: renumber operation types
Renumber the current operation types.

NOTE: Protocol change.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Johan Hovold 3a6b5aeec7 greybus: usb: clean up driver
Remove unused, broken or unneeded code and constructs.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 13:49:49 -07:00
Viresh Kumar 48ed3f6e42 greybus: connection: remove special check for svc cport id
This is required to get things working for now, after the latest revert
of svc protocol is done.

Currently svc's cport id is set to 2 and that hd cport id will be used
for the third connection we make. And that protocol (which is i2c in one
of the cases), may not work as the (dis)connected event isn't sent for
it.

Fix this by getting rid of svc protocol check from (dis)connected
events for now. This must be reverted later, once svc protocol is
included again.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Mark Greer <mgreer@animalcreek.com>
Reviewed-by: Alex Elder <elder@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-30 12:21:12 -07:00
Greg Kroah-Hartman 3eac885de2 greybus: svc: revert svc changes to keep things working for a while.
The firmware for the svc changes isn't quite ready, so revert the whole
set of patches in one hunk to get things back to a working state for the
other firmware developers.  The svc patches will be added back in a
separate branch.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-29 10:05:09 -07:00
Bryan O'Donoghue cb60f4960e greybus: loopback: warn user if kfifo cannot log all data
The depth of the kfifo used to log the latency data for user-space can be
moved upwards or downward by way of a module parameter. The user may still
specify a test set that's larger than the number of kfifo elements we have
available. If the user specifies more iterations than can be logged give a
warning as feedback and continue with the test.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-28 14:58:36 -07:00
Bryan O'Donoghue cbd204b48d greybus: loopback: provide interface to read all latency data-points
The current loopback code provides the minimum, maximum and average latency
values for a given test set. It would be highly useful for user-space to
have access to each one of the latency metrics in order to graph outliers.

This patch adds a simple character device interface implmenting a read()
interface that allows user-space to read out the saved latency metrics
which have been stored in a kfifo for this purpose.

A module parameter is provided to allow varying the depth of the kfifo in
order to allow a user to capture potentially large data sets. This version
sets the default depth for the kfifo at 8192 dwords.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-28 14:56:31 -07:00
Bryan O'Donoghue 85d678c0be greybus: loopback: make loopback code thread safe
Current code allows a sysfs callback and a kernel worker thread to write
all over and act upon data that could be in the process of being updated by
the other. This patch adds a reasonably coarse mutex to enscure sync
between the two.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-28 14:50:02 -07:00
Bryan O'Donoghue a7e60062b0 greybus: loopback: remove redundant timestamping
It is of more interest to graphing system performance to base our
timestamps on the time it takes a greybus_operation_sync() to complete.
Higher level timestamping code is less accurate and not relevant to
throughput and latency characterization.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-28 14:50:02 -07:00
Viresh Kumar 9612f2bcd4 greybus: initialize svc connection while creating hd
Its really part of initializing the host device and is required for
every 'hd' that is created. Lets move the call to do basic
initialization of svc connection to greybus_create_hd().

Also add a comment to specify why we need to do it that early.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-28 14:47:03 -07:00
Greg Kroah-Hartman fe166c6a2b greybus: core: clean up ida memory for host controller
We forgot to free any ida internal structures that were used by this
host controller structure when we free the memory for the controller.
So fix that up by doing so in the release function.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
2015-07-28 14:47:03 -07:00
Viresh Kumar d8742156c1 greybus: remove svc_msg.h
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:22 -07:00
Viresh Kumar 5a202efe63 greybus: es1: create svc connection early enough
The svc connection needs to be ready before creating the URBs, otherwise
the svc version request might come in before the AP was ready to parse
them.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:20 -07:00
Greg Kroah-Hartman 4bc88276eb greybus: interface: make gb_interface_destroy() static
The function is only called locally, so mark it static to make sparse
happy.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:18 -07:00
Greg Kroah-Hartman d187576fbe greybus: remove submit_svc from the host driver
The callback is never used anymore, so remove it from struct
greybus_host_driver as well as from the es1 and es2 drivers.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:16 -07:00
Greg Kroah-Hartman 90c807e4fb greybus: greybus.h: remove greybus_svc_in()
The function is gone, remove it from the header file as well.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:12 -07:00
Perry Hung e50b7be565 greybus: svc: add flags and traffic class parameter to connection create op
The AP needs to be able to specify L4 CPort flags and traffic class
parameters on a connection-by-connection basis. Extend the connection
create operation to accept these. Since there's no policy to decide
these, fix them at TC0 with end-to-end-flow control, controlled segment
dropping, and CPort safety valve enabled.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:10 -07:00
Perry Hung 9c1552d7c4 greybus: svc: connection: ask SVC to create connections
Ask the SVC to do all the necessary bits for creating a new connection.
This is skipped for the initial SVC connection.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:07 -07:00
Perry Hung 5d6896d24a greybus: svc: create bidirectional routes on hotplug request
Upon receiving a hotplug request, we need to prepare the routing table
to allow packets to flow between the AP interface and the newly detected
interface.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:04 -07:00
Perry Hung 4de9b5679a greybus: svc: add route create operation
Implement the SVC Protocol Route Create Operation.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:13:00 -07:00
Viresh Kumar 0af7268882 greybus: get rid of old svc-protocol
Its not used anymore as we have more sophisticated svc protocol in
place, lets get rid of earlier code.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:12:58 -07:00
Greg Kroah-Hartman 939799057e greybus: es2: remove svc endpoint message handling
We have switched over to use the "new" svc messages, no more need to
have a special USB endpoint to handle them, they come through the normal
CPort messages.

Based on a patch from Viresh.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:12:55 -07:00
Greg Kroah-Hartman 972e84a8dc greybus: es1: remove svc endpoint message handling
We have switched over to use the "new" svc messages, no more need to
have a special USB endpoint to handle them, they come through the normal
CPort messages.

Based on a patch from Viresh.

Tested-by: Viresh Kumar <viresh.kumar@linaro.org>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:12:37 -07:00
Viresh Kumar 8c116e8d8e greybus: Switch to Cport 0 for svc and control protocol
Initially we fixed it to Cport 2, but its changed to Cport 0 now. Lets
switch that in code as well.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:12:36 -07:00
Viresh Kumar 8aa013526e greybus: es1/2: Lets start using svc protocol
All bits and pieces are in place now. Lets start using svc protocol
instead of stuff present in ap.c.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-27 14:12:24 -07:00
Viresh Kumar 77c461fa86 greybus: connection: compare hd_cport_id for matching SVC protocol
SVC protocol isn't per interface, but per entire entire endo. And so svc
cport id must be matched against hd_cport_id, not per-interface cport
id.

Fixes: 82edfac17e5f ("connection: don't send connected/disconnected events for SVC connection")
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 17:45:26 -07:00
Perry Hung 52fa38327b greybus: connection: silence warning on unbound protocols
If a protocol was not successfully created, we can't drop the refcount
on it. This might happen for example if the connection fails to bind a
protocol.

Silences a warning on cleanup.

Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:39:58 -07:00
Perry Hung e619e8505b greybus: battery: fix panic on operation error
If an operation times out or otherwise returns an error, val->intval
should not be set and an error-code should be returned.

Fixes a panic on unload while receiving -ENOTCONN.

Signed-off-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:39:58 -07:00
Viresh Kumar 23119de4e6 greybus: interface: localize gb_interface_destroy()
Its not referenced by svc or any other code anymore, lets stop exposing
it to rest of the files.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:33:20 -07:00
Viresh Kumar b45864d40c greybus: svc: remove interface->svc pointer
Its not updated/used anymore, remove it. Also move back the struct
gb_svc to svc.c as its not referenced by external users anymore.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:33:20 -07:00
Viresh Kumar dcd05008e4 greybus: svc: connection is created only once now
We no longer create a fresh connection on receiving svc-hello message,
but rather update the initial one.

Update 'initial_svc_connection' after the connection is fully
initialized. Look for the partially initialized connection while
removing hd, as hd might be removed before getting svc-hello requests
from svc.

Also update gb_svc_connection_init() to initialize id_map on the first
(and the only) call to connection-init function.

We also can't update connection->bundle->intf->svc, as its a bundle-less
connection. Lets stop updating intf->svc as its not really used.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:33:20 -07:00
Viresh Kumar 67c93ae6f5 greybus: svc: fully initialize the partially initialized connection
SVC hello message is received now and we should fully initialize the
partially initialized connection. This can be done by removing and
re-adding the device corresponding to the connection.

Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Tested-by: Perry Hung <perry@leaflabs.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:33:20 -07:00
Bryan O'Donoghue 3dfe8aaaee greybus: loopback: convert loopback wake/sleep to a waitqueue
Current code will incrementally poll for gb->type == 0 and sleep.
This type of polling strategy wastes cycles.

This patch changes the sleep strategy by introducing a wait-queue which
waits for gb->type != 0 or kthread_should_stop() to wake-up and work or
to wake-up and terminate.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-24 16:18:35 -07:00
Greg Kroah-Hartman c2939f41bc greybus: loopback: add poll support to the iteration_count sysfs file
This adds the ability to poll on "iteration_count" in sysfs and be woken
up when it changes, saving some cycles constantly hammering on the file
waiting for it to change.

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Tested-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
2015-07-24 16:14:43 -07:00
Johan Hovold 701615f82f greybus: operation: add completion work queue
Add dedicated bound work queue for operation completions and use the
connection work queues for incoming requests only.

There is no need to keep responses ordered internally or with respect to
requests. Instead allow operations to complete as soon as possible when
a response arrives (or the operation is cancelled).

Note that this also allows synchronous requests to be submitted from
request handlers as responses will no longer be blocked on the same
single-threaded work queue. Similarly, operations can now also be
cancelled from a request handler.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-23 12:55:25 -07:00
Johan Hovold 5a5bc354c6 greybus: operation: use per-connection work queues
Replace the global operation work queue with per-connection work queues.

There is no need to keep operations strictly ordered across connections,
something which only adds unnecessary latency.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-23 12:55:25 -07:00
Johan Hovold 10f9fa133a greybus: connection: clean up creation error paths
Clean up connection-creation error paths.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-23 12:55:25 -07:00
Johan Hovold 7c63a827d0 greybus: connection: clean up connection creation
Add variable for the host cport id rather than overload retval.
Remove redundant automatic variable for the id map.

Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-23 12:55:25 -07:00
Greg Kroah-Hartman 2975617421 greybus: connection: prevent oops for protocol_id sysfs file
If we don't have a protocol assigned to a connection, don't oops when
trying to read the "protocol_id" sysfs file.

Fixes Jira SW-968.

Reported-by: Alexandre Bailon <abailon@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
Reviewed-by: Viresh Kumar <viresh.kumar@linaro.org>
2015-07-23 12:52:20 -07:00
Viresh Kumar 155b9f175e greybus: svc: Fix build warning on 64bit systems
Fix below warnings that only generate for a 64 bit system:

greybus/svc.c:202:16: warning: format ‘%d’ expects argument of type ‘int’, but argument 4 has type ‘size_t {aka long unsigned int}’ [-Wformat=]
   dev_err(dev, "%s: Illegal size of hello request (%d %d)\n",
                ^
greybus/svc.c:202:16: warning: format ‘%d’ expects argument of type ‘int’, but argument 5 has type ‘long unsigned int’ [-Wformat=]

Fixes: 9cbe73e0cf45 ("svc: Implement SVC requests")
Reported-by: Greg KH <gregkh@google.com>
Signed-off-by: Viresh Kumar <viresh.kumar@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-23 12:51:38 -07:00
Johan Hovold 4e2b1e46ab greybus: connection: fix connection initialisation
Make sure connection is fully initialised before registering the
connection device and adding it to the host-device and bundle lists.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 11:13:03 -07:00
Johan Hovold a4e08469eb greybus: operation: clean up greybus_message_sent
Add connection variable to greybus_message_sent.

This will be put to more use by a follow-up up patch.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 11:10:33 -07:00
Johan Hovold b4bd734ea6 greybus: operation: fix operation ordering
Make the operation work queue single threaded.

The operation work queue was meant to be single threaded, but due to a
missing flag instead allowed one active task per CPU, something which
could lead to requests being processed out of order on SMP systems.

Signed-off-by: Johan Hovold <johan@hovoldconsulting.com>
Tested-by: Rui Miguel Silva <rui.silva@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 11:10:33 -07:00
Bryan O'Donoghue 583cbf50e0 greybus: loopback: rename frequency to requests
The name frequency does not adequately describe the data-point tracking the
number of greybus operations performed in a second by the loopback code.
Firmware team is moving towards calling this variable requests-per-second
or similar. This patch renames to keep the namespace consistent.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Patrick Titiano <ptitiano@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 10:46:53 -07:00
Bryan O'Donoghue e140c75ed9 greybus: loopback: add commentary to sysfs variables
Add some missing comments.
Add a TODO to look at doing iteration_count with KOBJ_CHANGE event instead
of having user-space poll the value reported in iteration_count to
determine when a test set is complete.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Reviewed-by: Patrick Titiano <ptitiano@baylibre.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 10:46:53 -07:00
Bryan O'Donoghue 00af6583d1 greybus: loopback: run operations a set number of times
In order to extract a meaningful set of data out of loopback metrics it
makes sense to have the ability to specify how many times a loopback
operation should run and then to stop when the threshold is hit.

This will allow exactly the same loopback data pattern to be run again and
again, which is a fundamental prerequisite to instrumenting and
characterizing the loopback interface over time.

This patch introduces a simple sysfs controlled variable iteration_max.
iteration_max is the maximum number of iterations to run for a given set.
iteration_count is used internally to count from zero to iteration_max
if-and-only-if iteration_max is non zero. If iteration_max is zero then the
original behaviour of running the test command ad infinitum is maintained.
User-space should incrementally poll the iteration_count to determine when
the sequence is finished.

To accomplish this we move away from running as many commands as possible
in a one second window and instead run a fixed number of commands and log
the time it takes for those commands to complete in aggregate. Since we are
no longer resetting counters every one second, the tracker variables have
been moved from u32 to u64 to allow for reasonably long tests to gather
reasonably large amounts of data, without fear of over-flowing the
data-points.

Signed-off-by: Bryan O'Donoghue <bryan.odonoghue@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
2015-07-22 10:46:53 -07:00