Commit Graph

257824 Commits

Author SHA1 Message Date
Dmitry Shmidt
c305cc6ea0 net: wireless: bcmdhd: Fix BSSID report for disassoc
Change-Id: I5e3b01a1a471e5983ab934fc9d65802a389ab1af
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-10-24 13:14:48 -07:00
Colin Cross
e9babf3472 timekeeping: fix 32-bit overflow in get_monotonic_boottime
get_monotonic_boottime adds three nanonsecond values stored
in longs, followed by an s64.  If the long values are all
close to 1e9 the first three additions can overflow and
become negative when added to the s64.  Cast the first
value to s64 so that all additions are 64 bit.

Change-Id: Ic996d8b6fbef0b72f2d027b0d8ef5259b5c1a540
Signed-off-by: Colin Cross <ccross@android.com>
2012-09-26 15:04:01 -07:00
Dmitry Shmidt
d6a38f44cf net: wireless: bcmdhd: Adjust roaming treshold to -65 dB
Change-Id: I88bb0cf759ee4262f31f054ef2dd5fc6258e8628
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-09-20 11:33:09 -07:00
Dmitry Shmidt
4744c266a6 net: wireless: bcmdhd: Add print when power-save mode is OFF
Change-Id: Idc72198b2d59c76dd45ba918cef982bcd7b570ab
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-09-17 11:37:52 -07:00
Dmitry Shmidt
0aa3b61806 net: wireless: bcmdhd: Update wifi stack ps state if was changed
Change-Id: Ib1ee0b6ee05077d1ed6cfb578b6384dfc9787c81
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>

Conflicts:

	drivers/net/wireless/bcmdhd/wl_cfg80211.h
2012-09-17 11:36:29 -07:00
Dmitry Shmidt
477f1d9056 net: wireless: bcmdhd: Add ROAM setting per platform from Makefle
Change-Id: Ia6bc3025e3641cb6b91022ab1c9976c0f6ad16a4
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-09-13 13:58:00 -07:00
Dmitry Shmidt
6a5fe817ac net: wireless: bcmdhd: Report proper mcs rate mask
Setting proper mcs rate mask allows to connect in 802.11n-only mode

Change-Id: Iffd47a60c92a74d29e42d81d79fa64463f5895c5
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-09-07 11:25:30 -07:00
JP Abgrall
1dfbc281b4 netfilter: xt_qtaguid: report only uid tags to non-privileged processes
In the past, a process could only see its own stats (uid-based summary,
and details).
Now we allow any process to see other UIDs uid-based stats, but still
hide the detailed stats.

Change-Id: I7666961ed244ac1d9359c339b048799e5db9facc
Signed-off-by: JP Abgrall <jpa@google.com>
2012-08-28 16:58:08 -07:00
Dmitry Shmidt
ddb45c7e85 net: wireless: bcmdhd: Fix sending ctrl packet
- Schedule dpc thread to send ctrl frame if we cannot
  send ctrl packet immediately.

Change-Id: I5ae8b705a6ccddcc1f5c86b4c094342b57d26c7f
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-28 16:17:37 -07:00
Dmitry Shmidt
d7cdb87a5e net: wireless: bcmdhd: Add ASSOC event processing
Change-Id: Ide0b887ba52af56d0aaa415111df5ba16265c8d8
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-27 17:38:43 -07:00
Dmitry Shmidt
8b056ddc94 net: wireless: bcmdhd: Update to version 5.90.195.104
- Fix p2p support for new wpa_supplicant
- Propagate disconnect error code for cfg80211

Change-Id: I9643fbad7b6170b0e794fd7854201931d5eefb22
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-27 15:30:27 -07:00
Johannes Berg
26ae87e169 cfg80211: allow registering to beacons
Add the ability to register to received beacon frames
to allow implementing OLBC logic in userspace. The
registration is per wiphy since there's no point in
receiving the same frame multiple times.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24 13:56:17 -07:00
Johannes Berg
82342154be nl80211: add API to probe a client
When the AP SME in hostapd is used it wants to
probe the clients when they have been idle for
some time. Add explicit API to support this.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24 13:56:07 -07:00
Johannes Berg
eef4c1efee nl80211: allow subscribing to unexpected class3 frames
To implement AP mode without monitor interfaces we
need to be able to send a deauth to stations that
send frames without being associated. Enable this
by adding a new nl80211 event for such frames that
an application can subscribe to.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24 13:55:57 -07:00
Johannes Berg
6c3e830bd8 nl80211: advertise device AP SME
Add the ability to advertise that the device
contains the AP SME and what features it can
support. There are currently no features in
the bitmap -- probe response offload will be
advertised by a few patches Arik is working
on now (who took over from Guy Eilam) and a
device with AP SME will typically implement
and require response offload.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

Conflicts:

	drivers/net/wireless/ath/ath6kl/init.c

Change-Id: Ib1a65814860cf97cadd142c17be0e91f43743832
2012-08-24 13:55:43 -07:00
Johannes Berg
1bd42d5ea7 nl80211: advertise GTK rekey support, new triggers
Since we now have the necessary API in place to support
GTK rekeying, applications will need to know whether it
is supported by a device. Add a pseudo-trigger that is
used only to advertise that capability. Also, add some
new triggers that match what iwlagn devices can do.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-08-24 13:55:17 -07:00
Arik Nemtsov
e350606366 nl80211: support sending TDLS commands/frames
Add support for sending high-level TDLS commands and TDLS frames via
NL80211_CMD_TDLS_OPER and NL80211_CMD_TDLS_MGMT, respectively. Add
appropriate cfg80211 callbacks for lower level drivers.

Add wiphy capability flags for TDLS support and advertise them via
nl80211.

Signed-off-by: Arik Nemtsov <arik@wizery.com>
Cc: Kalyan C Gaddam <chakkal@iit.edu>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

Conflicts:

	include/linux/nl80211.h
	include/net/cfg80211.h
	net/wireless/nl80211.c

Change-Id: I08e4de6e92680aed35b98838aa999d31963b6d50
2012-08-24 13:49:08 -07:00
Jouni Malinen
931201c5f7 cfg80211/nl80211: Add PMKSA caching candidate event
When the driver (or most likely firmware) decides which AP to use
for roaming based on internal scan result processing, user space
needs to be notified of PMKSA caching candidates to allow RSN
pre-authentication to be used.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

Conflicts:

	include/linux/nl80211.h

Change-Id: I31aa113747b75f5f35658b857fdfe8d9a75e4534
2012-08-24 13:46:10 -07:00
Johannes Berg
97ce108d89 cfg80211/nl80211: support GTK rekey offload
In certain circumstances, like WoWLAN scenarios,
devices may implement (partial) GTK rekeying on
the device to avoid waking up the host for it.

In order to successfully go through GTK rekeying,
the KEK, KCK and the replay counter are required.

Add API to let the supplicant hand the parameters
to the driver which may store it for future GTK
rekey operations.

Note that, of course, if GTK rekeying is done by
the device, the EAP frame must not be passed up
to userspace, instead a rekey event needs to be
sent to let userspace update its replay counter.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>

Conflicts:

	include/linux/nl80211.h
	net/wireless/nl80211.c

Change-Id: Icd3a157742b08c01a3be20d46d4112e5d4b93a58
2012-08-24 13:44:43 -07:00
Dmitry Shmidt
eca0e767ef net: wireless: bcmdhd: Remove WIPHY_FLAG_SUPPORTS_FW_ROAM flag
If driver advertises FW_ROAM, the supplicant wouldn't send
the BSSID & Freq in the connect command allowing the driver
to choose the AP to connect to. But unless we support ROAM_CACHE
in firware this will delay the ASSOC as the FW need to do a full
scan before attempting to connect.

Change-Id: Iebc88a60243196b9ad27b8302f2b1473710308f6
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-23 11:33:16 -07:00
Dmitry Shmidt
50701ac7b9 net: wireless: bcmdhd: Remove PMKID_CACHE and TXFAIL events for CFG80211
Change-Id: I82b6a1c9941485f3b47bc5978873379ab8853601
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-22 17:39:30 -07:00
Dmitry Shmidt
eb3cd50991 net: wireless: bcmdhd: Update to Version 5.90.195.98
Change-Id: I2854300bc03b133d8276bea2f36f4c5253c551a1
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-22 12:32:00 -07:00
Mike J. Chen
8f4d8bd72f ARM: disable preemption in machine_shutdown
Since the smp call to stop the other cpus are handled in those
cpus in interrupt context, there's a potential for those smp
handlers to interrupt threads holding spin locks (such as the
one a mutex holds).  This prevents those threads from ever
releasing their spin lock, so if the cpu doing the shutdown
is allowed to switch to another thread that tries to grab the
same lock/mutex, we could get into a deadlock (the spin lock
call is called with preemption disabled in the mutex lock code).

To avoid that possibility, disable preemption before doing the
smp_send_stop().

Change-Id: I7976c5382d7173fcb3cd14da8cc5083d442b2544
Signed-off-by: Mike J. Chen <mjchen@google.com>
2012-08-20 15:50:55 -07:00
Mike Lockwood
16f1d42482 USB: gadget: f_audio_source: Fix compilation error
Change-Id: I1b785c47bda03208d396473a9d1c94631f5624d9
Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-08-16 13:15:09 -07:00
Mike Lockwood
54c7c33ce2 USB: gadget: f_audio_source: Fix use after free in audio_unbind
When USB was disconnected, we were freeing our audio_dev struct in audio_unbind
before the audio system had cleaned up, resulting in a hang in audio_pcm_close.
We now statically allocate the audio_dev struct to avoid this problem.

Change-Id: I58ad21eaa20dcf4aa74ee614ef3b6ed2c91d52a1
Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-08-16 12:52:33 -07:00
Vinicius Costa Gomes
d4bad8b2ea HID: uhid: Fix sending events with invalid data
This was detected because events with invalid types were arriving
to userspace.

The code before this patch would only work for the first event in the
queue (when uhid->tail is 0).

Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@openbossa.org>
Reviewed-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:30 -07:00
Jiri Kosina
db5889812a HID: uhid: silence gcc warning
gcc is giving me:

drivers/hid/uhid.c: In function ‘uhid_hid_get_raw’:
drivers/hid/uhid.c:157: warning: ‘len’ may be used uninitialized in this function

which is clearly bogus, as

- when used as memcpy() argument, it's initialized properly
- the code is structured in a way that either 'ret' or 'len'
  is always initialized, so the return statement always has
  an initialized value.

Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:30 -07:00
David Herrmann
d33f92d28b MAINTAINERS: add UHID entry
Add an UHID entry to the MAINTAINERS file.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:30 -07:00
David Herrmann
9634f8109f HID: uhid: add example program
This adds an example user-space program that emulates a 3 button mouse
with wheel. It detects keyboard presses and moves the mouse accordingly.

It register a fake HID device to feed the raw HID reports into the kernel.
In this example, you could use uinput to get the same result, but this
shows how to get the same behavior with uhid so you don't need HID parsers
in user-space.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:29 -07:00
David Herrmann
bd76675614 HID: uhid: add documentation
This describes the protocol used by uhid for user-space applications. It
describes the details like non-blocking I/O and readv/writev for multiple
events per syscall.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:29 -07:00
David Herrmann
c12e46fb71 HID: uhid: implement feature requests
HID standard allows sending a feature request to the device which is
answered by an HID report. uhid implements this by sending a UHID_FEATURE
event to user-space which then must answer with UHID_FEATURE_ANSWER. If it
doesn't do this in a timely manner, the request is discarded silently.

We serialize the feature requests, that is, there is always only a single
active feature-request sent to user-space, other requests have to wait.
HIDP and USB-HID do it the same way.

Because we discard feature-requests silently, we must make sure to match
a response to the corresponding request. We use sequence-IDs for this so
user-space must copy the ID from the request into the answer.
Feature-answers are ignored if they do not contain the same ID as the
currently pending feature request.

Internally, we must make sure that feature-requests are synchronized with
UHID_DESTROY and close() events. We must not dead-lock when closing the
HID device, either, so we have to use separate locks.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:29 -07:00
David Herrmann
715ee7c3e5 HID: uhid: forward raw output reports to user-space
Some drivers that use non-standard HID features require raw output reports
sent to the device. We now forward these requests directly to user-space
so the transport-level driver can correctly send it to the device or
handle it correspondingly.

There is no way to signal back whether the transmission was successful,
moreover, there might be lots of messages coming out from the driver
flushing the output-queue. However, there is currently no driver that
causes this so we are safe. If some drivers need to transmit lots of data
this way, we need a method to synchronize this and can implement another
UHID_OUTPUT_SYNC event.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:29 -07:00
David Herrmann
bd46634b0b HID: uhid: forward output request to user-space
If the hid-driver wants to send standardized data to the device it uses a
linux input_event. We forward this to the user-space transport-level
driver so they can perform the requested action on the device.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:29 -07:00
David Herrmann
e458139e9e HID: uhid: forward open/close events to user-space
HID core notifies us with *_open/*_close callbacks when there is an actual
user of our device. We forward these to user-space so they can react on
this. This allows user-space to skip I/O unless they receive an OPEN
event. When they receive a CLOSE event they can stop I/O again to save
energy.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
245fd8c6b7 HID: uhid: add UHID_START and UHID_STOP events
We send UHID_START and UHID_STOP events to user-space when the HID core
starts/stops the device. This notifies user-space about driver readiness
and data-I/O can start now.

This directly forwards the callbacks from hid-core to user-space.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
66454600e6 HID: uhid: forward hid report-descriptor to hid core
When the uhid_hid_parse callback is called we simply forward it to
hid_parse_report() with the data that we got in the UHID_CREATE event.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
e0ad83067d HID: uhid: allow feeding input data into uhid devices
This adds a new event type UHID_INPUT which allows user-space to feed raw
HID reports into the HID subsystem. We copy the data into kernel memory
and directly feed it into the HID core.

There is no error handling of the events couldn't be parsed so user-space
should consider all events successfull unless read() returns an error.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
6b1a4c7c9a HID: uhid: add UHID_CREATE and UHID_DESTROY events
UHID_CREATE and UHID_DESTROY are used to create and destroy a device on an
open uhid char-device. Internally, we allocate and register an HID device
with the HID core and immediately start the device. From now on events may
be received or sent to the device.

The UHID_CREATE event has a payload similar to the data used by
Bluetooth-HIDP when creating a new connection.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
d3444a842a HID: uhid: implement write() on uhid devices
Similar to read() you can only write() a single event with one call to an
uhid device. To write multiple events use writev() which is supported by
uhid.

We currently always return -EOPNOTSUPP but other events will be added in
later patches.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:28 -07:00
David Herrmann
b8dd3d95ca HID: uhid: implement read() on uhid devices
User-space can use read() to get a single event from uhid devices. read()
does never return multiple events. This allows us to extend the event
structure and still keep backwards compatibility.

If user-space wants to get multiple events in one syscall, they should use
the readv()/writev() syscalls which are supported by uhid.

This introduces a new lock which helps us synchronizing simultaneous reads
from user-space. We also correctly return -EINVAL/-EFAULT only on errors
and retry the read() when some other thread captured the event faster than
we did.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:27 -07:00
David Herrmann
191b03260f HID: uhid: allow poll()'ing on uhid devices
As long as the internal buffer is not empty, we return POLLIN to
user-space.

uhid->head and uhid->tail are no atomics so the comparison may return
inexact results. However, this doesn't matter here as user-space would
need to poll() in two threads simultaneously to trigger this. And in this
case it doesn't matter if a cached result is returned or the exact new
result as user-space does not know which thread returns first from poll()
and the following read(). So it is safe to compare the values without
locking.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:27 -07:00
David Herrmann
ef5006bca1 HID: uhid: add internal message buffer
When receiving messages from the HID subsystem, we need to process them
and store them in an internal buffer so user-space can read() on the char
device to retrieve the messages.

This adds a static buffer for 32 messages to each uhid device. Each
message is dynamically allocated so the uhid_device structure does not get
too big.

uhid_queue() adds a message to the buffer. If the buffer is full, the
message is discarded. uhid_queue_event() is an helper for messages without
payload.

This also adds a public header: uhid.h. It contains the declarations for
the user-space API. It is built around "struct uhid_event" which contains
a type field which specifies the event type and each event can then add a
variable-length payload. For now, there is only a dummy event but later
patches will add new event types and payloads.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:27 -07:00
David Herrmann
4409981837 HID: uhid: introduce user-space I/O driver support for HID
This adds a dummy driver that will support user-space I/O drivers for the
HID subsystem. This allows to write transport-level drivers like USB-HID
and Bluetooth-HID in user-space.

Low-Energy Bluetooth needs this to feed HID data that is parsed in
user-space back into the kernel.

Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
2012-08-16 12:44:27 -07:00
Dmitry Shmidt
efadaa2555 mmc: Make sure host is disabled on suspend
Change-Id: Ie0bf2004e173cef8dad66722a152658d7727ab65
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-16 11:27:59 -07:00
Dmitry Shmidt
11c327f598 net: wireless: bcm4329: Remove obsolete files
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-13 14:03:29 -07:00
Ashish Sharma
9a6bc3422c netfilter: xt_IDLETIMER: Rename INTERFACE to LABEL in netlink notification.
Signed-off-by: Ashish Sharma <ashishsharma@google.com>
2012-08-13 12:58:31 -07:00
Dmitry Shmidt
e15cb9927c net: wireless: bcmdhd: Use correct time from boot for TSF
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-08-13 12:45:38 -07:00
Bernhard Walle
a1bc297a90 scripts/Kbuild.include: Fix portability problem of "echo -e"
"echo -e" is a GNU extension. When cross-compiling the kernel on a
BSD-like operating system (Mac OS X in my case), this doesn't work.

One could install a GNU version of echo, put that in the $PATH before
the system echo and use "/usr/bin/env echo", but the solution with
printf is simpler.

Since it is no disadvantage on Linux, I hope that gets accepted even if
cross-compiling the Linux kernel on another Unix operating system is
quite a rare use case.

Signed-off-by: Bernhard Walle <bernhard@bwalle.de>
Andreas Bießmann <andreas@biessmann.de>
Signed-off-by: Michal Marek <mmarek@suse.cz>
2012-08-08 13:49:31 -07:00
Mike Lockwood
2fa1f1c9b5 USB: gadget: f_audio_source: Fix error handling and increase packet size
Fixes watchdog reset on USB disconnect
Larger packet size fixes performance in fullspeed mode

Signed-off-by: Mike Lockwood <lockwood@google.com>
2012-08-02 15:23:27 -07:00
Dmitry Shmidt
e4639327fc net: wireless: bcmdhd: Fill station_info packet fields
Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
2012-07-27 10:04:44 -07:00