mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1480 commits) bonding: enable netpoll without checking link status xfrm: Refcount destination entry on xfrm_lookup net: introduce rx_handler results and logic around that bonding: get rid of IFF_SLAVE_INACTIVE netdev->priv_flag bonding: wrap slave state work net: get rid of multiple bond-related netdevice->priv_flags bonding: register slave pointer for rx_handler be2net: Bump up the version number be2net: Copyright notice change. Update to Emulex instead of ServerEngines e1000e: fix kconfig for crc32 dependency netfilter ebtables: fix xt_AUDIT to work with ebtables xen network backend driver bonding: Improve syslog message at device creation time bonding: Call netif_carrier_off after register_netdevice bonding: Incorrect TX queue offset net_sched: fix ip_tos2prio xfrm: fix __xfrm_route_forward() be2net: Fix UDP packet detected status in RX compl Phonet: fix aligned-mode pipe socket buffer header reserve netxen: support for GbE port settings ... Fix up conflicts in drivers/staging/brcm80211/brcmsmac/wl_mac80211.c with the staging updates.
This commit is contained in:
commit
7a6362800c
1143 files changed
+119348
-38135
No files matched your search
@@ -35,6 +35,17 @@ Who: Luis R. Rodriguez <lrodriguez@atheros.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: AR9170USB
|
||||
When: 2.6.40
|
||||
|
||||
Why: This driver is deprecated and the firmware is no longer
|
||||
maintained. The replacement driver "carl9170" has been
|
||||
around for a while, so the devices are still supported.
|
||||
|
||||
Who: Christian Lamparter <chunkeey@googlemail.com>
|
||||
|
||||
---------------------------
|
||||
|
||||
What: IRQF_SAMPLE_RANDOM
|
||||
Check: IRQF_SAMPLE_RANDOM
|
||||
When: July 2009
|
||||
@@ -604,6 +615,13 @@ Who: Jean Delvare <khali@linux-fr.org>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: xt_connlimit rev 0
|
||||
When: 2012
|
||||
Who: Jan Engelhardt <jengelh@medozas.de>
|
||||
Files: net/netfilter/xt_connlimit.c
|
||||
|
||||
----------------------------
|
||||
|
||||
What: noswapaccount kernel command line parameter
|
||||
When: 2.6.40
|
||||
Why: The original implementation of memsw feature enabled by
|
||||
@@ -619,3 +637,11 @@ Why: The original implementation of memsw feature enabled by
|
||||
Who: Michal Hocko <mhocko@suse.cz>
|
||||
|
||||
----------------------------
|
||||
|
||||
What: ipt_addrtype match include file
|
||||
When: 2012
|
||||
Why: superseded by xt_addrtype
|
||||
Who: Florian Westphal <fw@strlen.de>
|
||||
Files: include/linux/netfilter_ipv4/ipt_addrtype.h
|
||||
|
||||
----------------------------
|
||||
@@ -1,4 +1,4 @@
|
||||
[state: 21-11-2010]
|
||||
[state: 27-01-2011]
|
||||
|
||||
BATMAN-ADV
|
||||
----------
|
||||
@@ -67,15 +67,16 @@ All mesh wide settings can be found in batman's own interface
|
||||
folder:
|
||||
|
||||
# ls /sys/class/net/bat0/mesh/
|
||||
# aggregated_ogms bonding fragmentation orig_interval
|
||||
# vis_mode
|
||||
# aggregated_ogms gw_bandwidth hop_penalty
|
||||
# bonding gw_mode orig_interval
|
||||
# fragmentation gw_sel_class vis_mode
|
||||
|
||||
|
||||
There is a special folder for debugging informations:
|
||||
|
||||
# ls /sys/kernel/debug/batman_adv/bat0/
|
||||
# originators socket transtable_global transtable_local
|
||||
# vis_data
|
||||
# gateways socket transtable_global vis_data
|
||||
# originators softif_neigh transtable_local
|
||||
|
||||
|
||||
Some of the files contain all sort of status information regard-
|
||||
@@ -230,9 +231,8 @@ CONTACT
|
||||
Please send us comments, experiences, questions, anything :)
|
||||
|
||||
IRC: #batman on irc.freenode.org
|
||||
Mailing-list: b.a.t.m.a.n@b.a.t.m.a.n@lists.open-mesh.org
|
||||
(optional subscription at
|
||||
https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n)
|
||||
Mailing-list: b.a.t.m.a.n@open-mesh.org (optional subscription
|
||||
at https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n)
|
||||
|
||||
You can also contact the Authors:
|
||||
|
||||
|
||||
@@ -2558,18 +2558,15 @@ enslaved.
|
||||
16. Resources and Links
|
||||
=======================
|
||||
|
||||
The latest version of the bonding driver can be found in the latest
|
||||
The latest version of the bonding driver can be found in the latest
|
||||
version of the linux kernel, found on http://kernel.org
|
||||
|
||||
The latest version of this document can be found in either the latest
|
||||
kernel source (named Documentation/networking/bonding.txt), or on the
|
||||
bonding sourceforge site:
|
||||
The latest version of this document can be found in the latest kernel
|
||||
source (named Documentation/networking/bonding.txt).
|
||||
|
||||
http://www.sourceforge.net/projects/bonding
|
||||
|
||||
Discussions regarding the bonding driver take place primarily on the
|
||||
bonding-devel mailing list, hosted at sourceforge.net. If you have
|
||||
questions or problems, post them to the list. The list address is:
|
||||
Discussions regarding the usage of the bonding driver take place on the
|
||||
bonding-devel mailing list, hosted at sourceforge.net. If you have questions or
|
||||
problems, post them to the list. The list address is:
|
||||
|
||||
bonding-devel@lists.sourceforge.net
|
||||
|
||||
@@ -2578,6 +2575,17 @@ be found at:
|
||||
|
||||
https://lists.sourceforge.net/lists/listinfo/bonding-devel
|
||||
|
||||
Discussions regarding the developpement of the bonding driver take place
|
||||
on the main Linux network mailing list, hosted at vger.kernel.org. The list
|
||||
address is:
|
||||
|
||||
netdev@vger.kernel.org
|
||||
|
||||
The administrative interface (to subscribe or unsubscribe) can
|
||||
be found at:
|
||||
|
||||
http://vger.kernel.org/vger-lists.html#netdev
|
||||
|
||||
Donald Becker's Ethernet Drivers and diag programs may be found at :
|
||||
- http://web.archive.org/web/*/http://www.scyld.com/network/
|
||||
|
||||
|
||||
@@ -280,6 +280,17 @@ tcp_max_orphans - INTEGER
|
||||
more aggressively. Let me to remind again: each orphan eats
|
||||
up to ~64K of unswappable memory.
|
||||
|
||||
tcp_max_ssthresh - INTEGER
|
||||
Limited Slow-Start for TCP with large congestion windows (cwnd) defined in
|
||||
RFC3742. Limited slow-start is a mechanism to limit growth of the cwnd
|
||||
on the region where cwnd is larger than tcp_max_ssthresh. TCP increases cwnd
|
||||
by at most tcp_max_ssthresh segments, and by at least tcp_max_ssthresh/2
|
||||
segments per RTT when the cwnd is above tcp_max_ssthresh.
|
||||
If TCP connection increased cwnd to thousands (or tens of thousands) segments,
|
||||
and thousands of packets were being dropped during slow-start, you can set
|
||||
tcp_max_ssthresh to improve performance for new TCP connection.
|
||||
Default: 0 (off)
|
||||
|
||||
tcp_max_syn_backlog - INTEGER
|
||||
Maximal number of remembered connection requests, which are
|
||||
still did not receive an acknowledgment from connecting client.
|
||||
|
||||
@@ -154,9 +154,28 @@ connections, one per accept()'d socket.
|
||||
write(cfd, msg, msglen);
|
||||
}
|
||||
|
||||
Connections are established between two endpoints by a "third party"
|
||||
application. This means that both endpoints are passive; so connect()
|
||||
is not possible.
|
||||
Connections are traditionally established between two endpoints by a
|
||||
"third party" application. This means that both endpoints are passive.
|
||||
|
||||
|
||||
As of Linux kernel version 2.6.39, it is also possible to connect
|
||||
two endpoints directly, using connect() on the active side. This is
|
||||
intended to support the newer Nokia Wireless Modem API, as found in
|
||||
e.g. the Nokia Slim Modem in the ST-Ericsson U8500 platform:
|
||||
|
||||
struct sockaddr_spn spn;
|
||||
int fd;
|
||||
|
||||
fd = socket(PF_PHONET, SOCK_SEQPACKET, PN_PROTO_PIPE);
|
||||
memset(&spn, 0, sizeof(spn));
|
||||
spn.spn_family = AF_PHONET;
|
||||
spn.spn_obj = ...;
|
||||
spn.spn_dev = ...;
|
||||
spn.spn_resource = 0xD9;
|
||||
connect(fd, (struct sockaddr *)&spn, sizeof(spn));
|
||||
/* normal I/O here ... */
|
||||
close(fd);
|
||||
|
||||
|
||||
WARNING:
|
||||
When polling a connected pipe socket for writability, there is an
|
||||
@@ -181,45 +200,9 @@ The pipe protocol provides two socket options at the SOL_PNPIPE level:
|
||||
interface index of the network interface created by PNPIPE_ENCAP,
|
||||
or zero if encapsulation is off.
|
||||
|
||||
|
||||
Phonet Pipe-controller Implementation
|
||||
-------------------------------------
|
||||
|
||||
Phonet Pipe-controller is enabled by selecting the CONFIG_PHONET_PIPECTRLR Kconfig
|
||||
option. It is useful when communicating with those Nokia Modems which do not
|
||||
implement Pipe controller in them e.g. Nokia Slim Modem used in ST-Ericsson
|
||||
U8500 platform.
|
||||
|
||||
The implementation is based on the Data Connection Establishment Sequence
|
||||
depicted in 'Nokia Wireless Modem API - Wireless_modem_user_guide.pdf'
|
||||
document.
|
||||
|
||||
It allows a phonet sequenced socket (host-pep) to initiate a Pipe connection
|
||||
between itself and a remote pipe-end point (e.g. modem).
|
||||
|
||||
The implementation adds socket options at SOL_PNPIPE level:
|
||||
|
||||
PNPIPE_PIPE_HANDLE
|
||||
It accepts an integer argument for setting value of pipe handle.
|
||||
|
||||
PNPIPE_ENABLE accepts one integer value (int). If set to zero, the pipe
|
||||
is disabled. If the value is non-zero, the pipe is enabled. If the pipe
|
||||
is not (yet) connected, ENOTCONN is error is returned.
|
||||
|
||||
The implementation also adds socket 'connect'. On calling the 'connect', pipe
|
||||
will be created between the source socket and the destination, and the pipe
|
||||
state will be set to PIPE_DISABLED.
|
||||
|
||||
After a pipe has been created and enabled successfully, the Pipe data can be
|
||||
exchanged between the host-pep and remote-pep (modem).
|
||||
|
||||
User-space would typically follow below sequence with Pipe controller:-
|
||||
-socket
|
||||
-bind
|
||||
-setsockopt for PNPIPE_PIPE_HANDLE
|
||||
-connect
|
||||
-setsockopt for PNPIPE_ENCAP_IP
|
||||
-setsockopt for PNPIPE_ENABLE
|
||||
PNPIPE_HANDLE is a read-only integer value. It contains the underlying
|
||||
identifier ("pipe handle") of the pipe. This is only defined for
|
||||
socket descriptors that are already connected or being connected.
|
||||
|
||||
|
||||
Authors
|
||||
|
||||
+5
-5
@@ -1231,7 +1231,7 @@ ATHEROS AR9170 WIRELESS DRIVER
|
||||
M: Christian Lamparter <chunkeey@web.de>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
W: http://wireless.kernel.org/en/users/Drivers/ar9170
|
||||
S: Maintained
|
||||
S: Obsolete
|
||||
F: drivers/net/wireless/ath/ar9170/
|
||||
|
||||
CARL9170 LINUX COMMUNITY WIRELESS DRIVER
|
||||
@@ -1727,6 +1727,7 @@ S: Maintained
|
||||
F: Documentation/zh_CN/
|
||||
|
||||
CISCO VIC ETHERNET NIC DRIVER
|
||||
M: Christian Benvenuti <benve@cisco.com>
|
||||
M: Vasanthy Kolluri <vkolluri@cisco.com>
|
||||
M: Roopa Prabhu <roprabhu@cisco.com>
|
||||
M: David Wang <dwang2@cisco.com>
|
||||
@@ -5169,6 +5170,7 @@ RALINK RT2X00 WIRELESS LAN DRIVER
|
||||
P: rt2x00 project
|
||||
M: Ivo van Doorn <IvDoorn@gmail.com>
|
||||
M: Gertjan van Wingerde <gwingerde@gmail.com>
|
||||
M: Helmut Schaa <helmut.schaa@googlemail.com>
|
||||
L: linux-wireless@vger.kernel.org
|
||||
L: users@rt2x00.serialmonkey.com (moderated for non-subscribers)
|
||||
W: http://rt2x00.serialmonkey.com/
|
||||
@@ -6092,13 +6094,11 @@ F: sound/soc/codecs/twl4030*
|
||||
TIPC NETWORK LAYER
|
||||
M: Jon Maloy <jon.maloy@ericsson.com>
|
||||
M: Allan Stephens <allan.stephens@windriver.com>
|
||||
L: tipc-discussion@lists.sourceforge.net
|
||||
L: netdev@vger.kernel.org (core kernel code)
|
||||
L: tipc-discussion@lists.sourceforge.net (user apps, general discussion)
|
||||
W: http://tipc.sourceforge.net/
|
||||
W: http://tipc.cslab.ericsson.net/
|
||||
T: git git://tipc.cslab.ericsson.net/pub/git/tipc.git
|
||||
S: Maintained
|
||||
F: include/linux/tipc*.h
|
||||
F: include/net/tipc/
|
||||
F: net/tipc/
|
||||
|
||||
TILE ARCHITECTURE
|
||||
|
||||
@@ -1,11 +1,21 @@
|
||||
#ifndef __ASM_SH_ETH_H__
|
||||
#define __ASM_SH_ETH_H__
|
||||
|
||||
#include <linux/phy.h>
|
||||
|
||||
enum {EDMAC_LITTLE_ENDIAN, EDMAC_BIG_ENDIAN};
|
||||
enum {
|
||||
SH_ETH_REG_GIGABIT,
|
||||
SH_ETH_REG_FAST_SH4,
|
||||
SH_ETH_REG_FAST_SH3_SH2
|
||||
};
|
||||
|
||||
struct sh_eth_plat_data {
|
||||
int phy;
|
||||
int edmac_endian;
|
||||
int register_type;
|
||||
phy_interface_t phy_interface;
|
||||
void (*set_mdio_gate)(unsigned long addr);
|
||||
|
||||
unsigned char mac_addr[6];
|
||||
unsigned no_ether_link:1;
|
||||
|
||||
+1
-1
@@ -78,7 +78,7 @@ obj-$(CONFIG_CRYPTO_DEFLATE) += deflate.o
|
||||
obj-$(CONFIG_CRYPTO_ZLIB) += zlib.o
|
||||
obj-$(CONFIG_CRYPTO_MICHAEL_MIC) += michael_mic.o
|
||||
obj-$(CONFIG_CRYPTO_CRC32C) += crc32c.o
|
||||
obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o
|
||||
obj-$(CONFIG_CRYPTO_AUTHENC) += authenc.o authencesn.o
|
||||
obj-$(CONFIG_CRYPTO_LZO) += lzo.o
|
||||
obj-$(CONFIG_CRYPTO_RNG2) += rng.o
|
||||
obj-$(CONFIG_CRYPTO_RNG2) += krng.o
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -2177,7 +2177,7 @@ static void drbd_connector_callback(struct cn_msg *req, struct netlink_skb_parms
|
||||
return;
|
||||
}
|
||||
|
||||
if (!cap_raised(nsp->eff_cap, CAP_SYS_ADMIN)) {
|
||||
if (!cap_raised(current_cap(), CAP_SYS_ADMIN)) {
|
||||
retcode = ERR_PERM;
|
||||
goto fail;
|
||||
}
|
||||
|
||||
+282
-5
@@ -31,6 +31,30 @@
|
||||
|
||||
#define VERSION "1.0"
|
||||
|
||||
#define ATH3K_DNLOAD 0x01
|
||||
#define ATH3K_GETSTATE 0x05
|
||||
#define ATH3K_SET_NORMAL_MODE 0x07
|
||||
#define ATH3K_GETVERSION 0x09
|
||||
#define USB_REG_SWITCH_VID_PID 0x0a
|
||||
|
||||
#define ATH3K_MODE_MASK 0x3F
|
||||
#define ATH3K_NORMAL_MODE 0x0E
|
||||
|
||||
#define ATH3K_PATCH_UPDATE 0x80
|
||||
#define ATH3K_SYSCFG_UPDATE 0x40
|
||||
|
||||
#define ATH3K_XTAL_FREQ_26M 0x00
|
||||
#define ATH3K_XTAL_FREQ_40M 0x01
|
||||
#define ATH3K_XTAL_FREQ_19P2 0x02
|
||||
#define ATH3K_NAME_LEN 0xFF
|
||||
|
||||
struct ath3k_version {
|
||||
unsigned int rom_version;
|
||||
unsigned int build_version;
|
||||
unsigned int ram_version;
|
||||
unsigned char ref_clock;
|
||||
unsigned char reserved[0x07];
|
||||
};
|
||||
|
||||
static struct usb_device_id ath3k_table[] = {
|
||||
/* Atheros AR3011 */
|
||||
@@ -42,15 +66,31 @@ static struct usb_device_id ath3k_table[] = {
|
||||
/* Atheros AR9285 Malbec with sflash firmware */
|
||||
{ USB_DEVICE(0x03F0, 0x311D) },
|
||||
|
||||
/* Atheros AR3012 with sflash firmware*/
|
||||
{ USB_DEVICE(0x0CF3, 0x3004) },
|
||||
|
||||
/* Atheros AR5BBU12 with sflash firmware */
|
||||
{ USB_DEVICE(0x0489, 0xE02C) },
|
||||
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
MODULE_DEVICE_TABLE(usb, ath3k_table);
|
||||
|
||||
#define BTUSB_ATH3012 0x80
|
||||
/* This table is to load patch and sysconfig files
|
||||
* for AR3012 */
|
||||
static struct usb_device_id ath3k_blist_tbl[] = {
|
||||
|
||||
/* Atheros AR3012 with sflash firmware*/
|
||||
{ USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_ATH3012 },
|
||||
|
||||
{ } /* Terminating entry */
|
||||
};
|
||||
|
||||
#define USB_REQ_DFU_DNLOAD 1
|
||||
#define BULK_SIZE 4096
|
||||
#define FW_HDR_SIZE 20
|
||||
|
||||
static int ath3k_load_firmware(struct usb_device *udev,
|
||||
const struct firmware *firmware)
|
||||
@@ -106,28 +146,265 @@ error:
|
||||
return err;
|
||||
}
|
||||
|
||||
static int ath3k_get_state(struct usb_device *udev, unsigned char *state)
|
||||
{
|
||||
int pipe = 0;
|
||||
|
||||
pipe = usb_rcvctrlpipe(udev, 0);
|
||||
return usb_control_msg(udev, pipe, ATH3K_GETSTATE,
|
||||
USB_TYPE_VENDOR | USB_DIR_IN, 0, 0,
|
||||
state, 0x01, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static int ath3k_get_version(struct usb_device *udev,
|
||||
struct ath3k_version *version)
|
||||
{
|
||||
int pipe = 0;
|
||||
|
||||
pipe = usb_rcvctrlpipe(udev, 0);
|
||||
return usb_control_msg(udev, pipe, ATH3K_GETVERSION,
|
||||
USB_TYPE_VENDOR | USB_DIR_IN, 0, 0, version,
|
||||
sizeof(struct ath3k_version),
|
||||
USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static int ath3k_load_fwfile(struct usb_device *udev,
|
||||
const struct firmware *firmware)
|
||||
{
|
||||
u8 *send_buf;
|
||||
int err, pipe, len, size, count, sent = 0;
|
||||
int ret;
|
||||
|
||||
count = firmware->size;
|
||||
|
||||
send_buf = kmalloc(BULK_SIZE, GFP_ATOMIC);
|
||||
if (!send_buf) {
|
||||
BT_ERR("Can't allocate memory chunk for firmware");
|
||||
return -ENOMEM;
|
||||
}
|
||||
|
||||
size = min_t(uint, count, FW_HDR_SIZE);
|
||||
memcpy(send_buf, firmware->data, size);
|
||||
|
||||
pipe = usb_sndctrlpipe(udev, 0);
|
||||
ret = usb_control_msg(udev, pipe, ATH3K_DNLOAD,
|
||||
USB_TYPE_VENDOR, 0, 0, send_buf,
|
||||
size, USB_CTRL_SET_TIMEOUT);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't change to loading configuration err");
|
||||
kfree(send_buf);
|
||||
return ret;
|
||||
}
|
||||
|
||||
sent += size;
|
||||
count -= size;
|
||||
|
||||
while (count) {
|
||||
size = min_t(uint, count, BULK_SIZE);
|
||||
pipe = usb_sndbulkpipe(udev, 0x02);
|
||||
|
||||
memcpy(send_buf, firmware->data + sent, size);
|
||||
|
||||
err = usb_bulk_msg(udev, pipe, send_buf, size,
|
||||
&len, 3000);
|
||||
if (err || (len != size)) {
|
||||
BT_ERR("Error in firmware loading err = %d,"
|
||||
"len = %d, size = %d", err, len, size);
|
||||
kfree(send_buf);
|
||||
return err;
|
||||
}
|
||||
sent += size;
|
||||
count -= size;
|
||||
}
|
||||
|
||||
kfree(send_buf);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int ath3k_switch_pid(struct usb_device *udev)
|
||||
{
|
||||
int pipe = 0;
|
||||
|
||||
pipe = usb_sndctrlpipe(udev, 0);
|
||||
return usb_control_msg(udev, pipe, USB_REG_SWITCH_VID_PID,
|
||||
USB_TYPE_VENDOR, 0, 0,
|
||||
NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static int ath3k_set_normal_mode(struct usb_device *udev)
|
||||
{
|
||||
unsigned char fw_state;
|
||||
int pipe = 0, ret;
|
||||
|
||||
ret = ath3k_get_state(udev, &fw_state);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't get state to change to normal mode err");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if ((fw_state & ATH3K_MODE_MASK) == ATH3K_NORMAL_MODE) {
|
||||
BT_DBG("firmware was already in normal mode");
|
||||
return 0;
|
||||
}
|
||||
|
||||
pipe = usb_sndctrlpipe(udev, 0);
|
||||
return usb_control_msg(udev, pipe, ATH3K_SET_NORMAL_MODE,
|
||||
USB_TYPE_VENDOR, 0, 0,
|
||||
NULL, 0, USB_CTRL_SET_TIMEOUT);
|
||||
}
|
||||
|
||||
static int ath3k_load_patch(struct usb_device *udev)
|
||||
{
|
||||
unsigned char fw_state;
|
||||
char filename[ATH3K_NAME_LEN] = {0};
|
||||
const struct firmware *firmware;
|
||||
struct ath3k_version fw_version, pt_version;
|
||||
int ret;
|
||||
|
||||
ret = ath3k_get_state(udev, &fw_state);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't get state to change to load ram patch err");
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (fw_state & ATH3K_PATCH_UPDATE) {
|
||||
BT_DBG("Patch was already downloaded");
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = ath3k_get_version(udev, &fw_version);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't get version to change to load ram patch err");
|
||||
return ret;
|
||||
}
|
||||
|
||||
snprintf(filename, ATH3K_NAME_LEN, "ar3k/AthrBT_0x%08x.dfu",
|
||||
fw_version.rom_version);
|
||||
|
||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Patch file not found %s", filename);
|
||||
return ret;
|
||||
}
|
||||
|
||||
pt_version.rom_version = *(int *)(firmware->data + firmware->size - 8);
|
||||
pt_version.build_version = *(int *)
|
||||
(firmware->data + firmware->size - 4);
|
||||
|
||||
if ((pt_version.rom_version != fw_version.rom_version) ||
|
||||
(pt_version.build_version <= fw_version.build_version)) {
|
||||
BT_ERR("Patch file version did not match with firmware");
|
||||
release_firmware(firmware);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = ath3k_load_fwfile(udev, firmware);
|
||||
release_firmware(firmware);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ath3k_load_syscfg(struct usb_device *udev)
|
||||
{
|
||||
unsigned char fw_state;
|
||||
char filename[ATH3K_NAME_LEN] = {0};
|
||||
const struct firmware *firmware;
|
||||
struct ath3k_version fw_version;
|
||||
int clk_value, ret;
|
||||
|
||||
ret = ath3k_get_state(udev, &fw_state);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't get state to change to load configration err");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
ret = ath3k_get_version(udev, &fw_version);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Can't get version to change to load ram patch err");
|
||||
return ret;
|
||||
}
|
||||
|
||||
switch (fw_version.ref_clock) {
|
||||
|
||||
case ATH3K_XTAL_FREQ_26M:
|
||||
clk_value = 26;
|
||||
break;
|
||||
case ATH3K_XTAL_FREQ_40M:
|
||||
clk_value = 40;
|
||||
break;
|
||||
case ATH3K_XTAL_FREQ_19P2:
|
||||
clk_value = 19;
|
||||
break;
|
||||
default:
|
||||
clk_value = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
snprintf(filename, ATH3K_NAME_LEN, "ar3k/ramps_0x%08x_%d%s",
|
||||
fw_version.rom_version, clk_value, ".dfu");
|
||||
|
||||
ret = request_firmware(&firmware, filename, &udev->dev);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Configuration file not found %s", filename);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = ath3k_load_fwfile(udev, firmware);
|
||||
release_firmware(firmware);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int ath3k_probe(struct usb_interface *intf,
|
||||
const struct usb_device_id *id)
|
||||
{
|
||||
const struct firmware *firmware;
|
||||
struct usb_device *udev = interface_to_usbdev(intf);
|
||||
int ret;
|
||||
|
||||
BT_DBG("intf %p id %p", intf, id);
|
||||
|
||||
if (intf->cur_altsetting->desc.bInterfaceNumber != 0)
|
||||
return -ENODEV;
|
||||
|
||||
/* match device ID in ath3k blacklist table */
|
||||
if (!id->driver_info) {
|
||||
const struct usb_device_id *match;
|
||||
match = usb_match_id(intf, ath3k_blist_tbl);
|
||||
if (match)
|
||||
id = match;
|
||||
}
|
||||
|
||||
/* load patch and sysconfig files for AR3012 */
|
||||
if (id->driver_info & BTUSB_ATH3012) {
|
||||
ret = ath3k_load_patch(udev);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Loading patch file failed");
|
||||
return ret;
|
||||
}
|
||||
ret = ath3k_load_syscfg(udev);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Loading sysconfig file failed");
|
||||
return ret;
|
||||
}
|
||||
ret = ath3k_set_normal_mode(udev);
|
||||
if (ret < 0) {
|
||||
BT_ERR("Set normal mode failed");
|
||||
return ret;
|
||||
}
|
||||
ath3k_switch_pid(udev);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (request_firmware(&firmware, "ath3k-1.fw", &udev->dev) < 0) {
|
||||
BT_ERR("Error loading firmware");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
if (ath3k_load_firmware(udev, firmware)) {
|
||||
release_firmware(firmware);
|
||||
return -EIO;
|
||||
}
|
||||
ret = ath3k_load_firmware(udev, firmware);
|
||||
release_firmware(firmware);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void ath3k_disconnect(struct usb_interface *intf)
|
||||
|
||||
@@ -105,6 +105,9 @@ static struct usb_device_id blacklist_table[] = {
|
||||
/* Atheros AR9285 Malbec with sflash firmware */
|
||||
{ USB_DEVICE(0x03f0, 0x311d), .driver_info = BTUSB_IGNORE },
|
||||
|
||||
/* Atheros 3012 with sflash firmware */
|
||||
{ USB_DEVICE(0x0cf3, 0x3004), .driver_info = BTUSB_IGNORE },
|
||||
|
||||
/* Atheros AR5BBU12 with sflash firmware */
|
||||
{ USB_DEVICE(0x0489, 0xe02c), .driver_info = BTUSB_IGNORE },
|
||||
|
||||
@@ -714,15 +717,11 @@ static int btusb_send_frame(struct sk_buff *skb)
|
||||
pipe = usb_sndisocpipe(data->udev,
|
||||
data->isoc_tx_ep->bEndpointAddress);
|
||||
|
||||
urb->dev = data->udev;
|
||||
urb->pipe = pipe;
|
||||
urb->context = skb;
|
||||
urb->complete = btusb_isoc_tx_complete;
|
||||
urb->interval = data->isoc_tx_ep->bInterval;
|
||||
usb_fill_int_urb(urb, data->udev, pipe,
|
||||
skb->data, skb->len, btusb_isoc_tx_complete,
|
||||
skb, data->isoc_tx_ep->bInterval);
|
||||
|
||||
urb->transfer_flags = URB_ISO_ASAP;
|
||||
urb->transfer_buffer = skb->data;
|
||||
urb->transfer_buffer_length = skb->len;
|
||||
|
||||
__fill_isoc_descriptor(urb, skb->len,
|
||||
le16_to_cpu(data->isoc_tx_ep->wMaxPacketSize));
|
||||
|
||||
@@ -398,6 +398,7 @@ static int hci_uart_register_dev(struct hci_uart *hu)
|
||||
hdev->flush = hci_uart_flush;
|
||||
hdev->send = hci_uart_send_frame;
|
||||
hdev->destruct = hci_uart_destruct;
|
||||
hdev->parent = hu->tty->dev;
|
||||
|
||||
hdev->owner = THIS_MODULE;
|
||||
|
||||
|
||||
@@ -183,20 +183,15 @@ static int addr4_resolve(struct sockaddr_in *src_in,
|
||||
{
|
||||
__be32 src_ip = src_in->sin_addr.s_addr;
|
||||
__be32 dst_ip = dst_in->sin_addr.s_addr;
|
||||
struct flowi fl;
|
||||
struct rtable *rt;
|
||||
struct neighbour *neigh;
|
||||
int ret;
|
||||
|
||||
memset(&fl, 0, sizeof fl);
|
||||
fl.nl_u.ip4_u.daddr = dst_ip;
|
||||
fl.nl_u.ip4_u.saddr = src_ip;
|
||||
fl.oif = addr->bound_dev_if;
|
||||
|
||||
ret = ip_route_output_key(&init_net, &rt, &fl);
|
||||
if (ret)
|
||||
rt = ip_route_output(&init_net, dst_ip, src_ip, 0, addr->bound_dev_if);
|
||||
if (IS_ERR(rt)) {
|
||||
ret = PTR_ERR(rt);
|
||||
goto out;
|
||||
|
||||
}
|
||||
src_in->sin_family = AF_INET;
|
||||
src_in->sin_addr.s_addr = rt->rt_src;
|
||||
|
||||
@@ -236,28 +231,28 @@ static int addr6_resolve(struct sockaddr_in6 *src_in,
|
||||
struct sockaddr_in6 *dst_in,
|
||||
struct rdma_dev_addr *addr)
|
||||
{
|
||||
struct flowi fl;
|
||||
struct flowi6 fl6;
|
||||
struct neighbour *neigh;
|
||||
struct dst_entry *dst;
|
||||
int ret;
|
||||
|
||||
memset(&fl, 0, sizeof fl);
|
||||
ipv6_addr_copy(&fl.fl6_dst, &dst_in->sin6_addr);
|
||||
ipv6_addr_copy(&fl.fl6_src, &src_in->sin6_addr);
|
||||
fl.oif = addr->bound_dev_if;
|
||||
memset(&fl6, 0, sizeof fl6);
|
||||
ipv6_addr_copy(&fl6.daddr, &dst_in->sin6_addr);
|
||||
ipv6_addr_copy(&fl6.saddr, &src_in->sin6_addr);
|
||||
fl6.flowi6_oif = addr->bound_dev_if;
|
||||
|
||||
dst = ip6_route_output(&init_net, NULL, &fl);
|
||||
dst = ip6_route_output(&init_net, NULL, &fl6);
|
||||
if ((ret = dst->error))
|
||||
goto put;
|
||||
|
||||
if (ipv6_addr_any(&fl.fl6_src)) {
|
||||
if (ipv6_addr_any(&fl6.saddr)) {
|
||||
ret = ipv6_dev_get_saddr(&init_net, ip6_dst_idev(dst)->dev,
|
||||
&fl.fl6_dst, 0, &fl.fl6_src);
|
||||
&fl6.daddr, 0, &fl6.saddr);
|
||||
if (ret)
|
||||
goto put;
|
||||
|
||||
src_in->sin6_family = AF_INET6;
|
||||
ipv6_addr_copy(&src_in->sin6_addr, &fl.fl6_src);
|
||||
ipv6_addr_copy(&src_in->sin6_addr, &fl6.saddr);
|
||||
}
|
||||
|
||||
if (dst->dev->flags & IFF_LOOPBACK) {
|
||||
|
||||
@@ -338,23 +338,11 @@ static struct rtable *find_route(struct t3cdev *dev, __be32 local_ip,
|
||||
__be16 peer_port, u8 tos)
|
||||
{
|
||||
struct rtable *rt;
|
||||
struct flowi fl = {
|
||||
.oif = 0,
|
||||
.nl_u = {
|
||||
.ip4_u = {
|
||||
.daddr = peer_ip,
|
||||
.saddr = local_ip,
|
||||
.tos = tos}
|
||||
},
|
||||
.proto = IPPROTO_TCP,
|
||||
.uli_u = {
|
||||
.ports = {
|
||||
.sport = local_port,
|
||||
.dport = peer_port}
|
||||
}
|
||||
};
|
||||
|
||||
if (ip_route_output_flow(&init_net, &rt, &fl, NULL, 0))
|
||||
rt = ip_route_output_ports(&init_net, NULL, peer_ip, local_ip,
|
||||
peer_port, local_port, IPPROTO_TCP,
|
||||
tos, 0);
|
||||
if (IS_ERR(rt))
|
||||
return NULL;
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -315,23 +315,11 @@ static struct rtable *find_route(struct c4iw_dev *dev, __be32 local_ip,
|
||||
__be16 peer_port, u8 tos)
|
||||
{
|
||||
struct rtable *rt;
|
||||
struct flowi fl = {
|
||||
.oif = 0,
|
||||
.nl_u = {
|
||||
.ip4_u = {
|
||||
.daddr = peer_ip,
|
||||
.saddr = local_ip,
|
||||
.tos = tos}
|
||||
},
|
||||
.proto = IPPROTO_TCP,
|
||||
.uli_u = {
|
||||
.ports = {
|
||||
.sport = local_port,
|
||||
.dport = peer_port}
|
||||
}
|
||||
};
|
||||
|
||||
if (ip_route_output_flow(&init_net, &rt, &fl, NULL, 0))
|
||||
rt = ip_route_output_ports(&init_net, NULL, peer_ip, local_ip,
|
||||
peer_port, local_port, IPPROTO_TCP,
|
||||
tos, 0);
|
||||
if (IS_ERR(rt))
|
||||
return NULL;
|
||||
return rt;
|
||||
}
|
||||
|
||||
@@ -153,7 +153,8 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
|
||||
nesdev, nesdev->netdev[0]->name);
|
||||
netdev = nesdev->netdev[0];
|
||||
nesvnic = netdev_priv(netdev);
|
||||
is_bonded = (netdev->master == event_netdev);
|
||||
is_bonded = netif_is_bond_slave(netdev) &&
|
||||
(netdev->master == event_netdev);
|
||||
if ((netdev == event_netdev) || is_bonded) {
|
||||
if (nesvnic->rdma_enabled == 0) {
|
||||
nes_debug(NES_DBG_NETDEV, "Returning without processing event for %s since"
|
||||
|
||||
@@ -1104,21 +1104,19 @@ static inline int mini_cm_accelerated(struct nes_cm_core *cm_core,
|
||||
static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpindex)
|
||||
{
|
||||
struct rtable *rt;
|
||||
struct flowi fl;
|
||||
struct neighbour *neigh;
|
||||
int rc = arpindex;
|
||||
struct net_device *netdev;
|
||||
struct nes_adapter *nesadapter = nesvnic->nesdev->nesadapter;
|
||||
|
||||
memset(&fl, 0, sizeof fl);
|
||||
fl.nl_u.ip4_u.daddr = htonl(dst_ip);
|
||||
if (ip_route_output_key(&init_net, &rt, &fl)) {
|
||||
rt = ip_route_output(&init_net, htonl(dst_ip), 0, 0, 0);
|
||||
if (IS_ERR(rt)) {
|
||||
printk(KERN_ERR "%s: ip_route_output_key failed for 0x%08X\n",
|
||||
__func__, dst_ip);
|
||||
return rc;
|
||||
}
|
||||
|
||||
if (nesvnic->netdev->master)
|
||||
if (netif_is_bond_slave(netdev))
|
||||
netdev = nesvnic->netdev->master;
|
||||
else
|
||||
netdev = nesvnic->netdev;
|
||||
|
||||
@@ -134,7 +134,7 @@ static void cn_ulog_callback(struct cn_msg *msg, struct netlink_skb_parms *nsp)
|
||||
{
|
||||
struct dm_ulog_request *tfr = (struct dm_ulog_request *)(msg + 1);
|
||||
|
||||
if (!cap_raised(nsp->eff_cap, CAP_SYS_ADMIN))
|
||||
if (!cap_raised(current_cap(), CAP_SYS_ADMIN))
|
||||
return;
|
||||
|
||||
spin_lock(&receiving_list_lock);
|
||||
|
||||
+52
-38
@@ -238,8 +238,8 @@ source "drivers/net/arm/Kconfig"
|
||||
config AX88796
|
||||
tristate "ASIX AX88796 NE2000 clone support"
|
||||
depends on ARM || MIPS || SUPERH
|
||||
select CRC32
|
||||
select MII
|
||||
select PHYLIB
|
||||
select MDIO_BITBANG
|
||||
help
|
||||
AX88796 driver, using platform bus to provide
|
||||
chip detection and resources
|
||||
@@ -1498,7 +1498,7 @@ config FORCEDETH
|
||||
config CS89x0
|
||||
tristate "CS89x0 support"
|
||||
depends on NET_ETHERNET && (ISA || EISA || MACH_IXDP2351 \
|
||||
|| ARCH_IXDP2X01 || MACH_MX31ADS)
|
||||
|| ARCH_IXDP2X01 || MACH_MX31ADS || MACH_QQ2440)
|
||||
---help---
|
||||
Support for CS89x0 chipset based Ethernet cards. If you have a
|
||||
network (Ethernet) card of this type, say Y and read the
|
||||
@@ -1512,7 +1512,7 @@ config CS89x0
|
||||
config CS89x0_NONISA_IRQ
|
||||
def_bool y
|
||||
depends on CS89x0 != n
|
||||
depends on MACH_IXDP2351 || ARCH_IXDP2X01 || MACH_MX31ADS
|
||||
depends on MACH_IXDP2351 || ARCH_IXDP2X01 || MACH_MX31ADS || MACH_QQ2440
|
||||
|
||||
config TC35815
|
||||
tristate "TOSHIBA TC35815 Ethernet support"
|
||||
@@ -1944,7 +1944,8 @@ config 68360_ENET
|
||||
config FEC
|
||||
bool "FEC ethernet controller (of ColdFire and some i.MX CPUs)"
|
||||
depends on M523x || M527x || M5272 || M528x || M520x || M532x || \
|
||||
MACH_MX27 || ARCH_MX35 || ARCH_MX25 || ARCH_MX5 || SOC_IMX28
|
||||
IMX_HAVE_PLATFORM_FEC || MXS_HAVE_PLATFORM_FEC
|
||||
default IMX_HAVE_PLATFORM_FEC || MXS_HAVE_PLATFORM_FEC if ARM
|
||||
select PHYLIB
|
||||
help
|
||||
Say Y here if you want to use the built-in 10/100 Fast ethernet
|
||||
@@ -2007,6 +2008,15 @@ config BCM63XX_ENET
|
||||
This driver supports the ethernet MACs in the Broadcom 63xx
|
||||
MIPS chipset family (BCM63XX).
|
||||
|
||||
config FTMAC100
|
||||
tristate "Faraday FTMAC100 10/100 Ethernet support"
|
||||
depends on ARM
|
||||
select MII
|
||||
help
|
||||
This driver supports the FTMAC100 10/100 Ethernet controller
|
||||
from Faraday. It is used on Faraday A320, Andes AG101 and some
|
||||
other ARM/NDS32 SoC's.
|
||||
|
||||
source "drivers/net/fs_enet/Kconfig"
|
||||
|
||||
source "drivers/net/octeon/Kconfig"
|
||||
@@ -2098,7 +2108,9 @@ config E1000
|
||||
|
||||
config E1000E
|
||||
tristate "Intel(R) PRO/1000 PCI-Express Gigabit Ethernet support"
|
||||
select CRC32
|
||||
depends on PCI && (!SPARC32 || BROKEN)
|
||||
select CRC32
|
||||
---help---
|
||||
This driver supports the PCI-Express Intel(R) PRO/1000 gigabit
|
||||
ethernet family of adapters. For PCI or PCI-X e1000 adapters,
|
||||
@@ -2235,15 +2247,6 @@ config R8169
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called r8169. This is recommended.
|
||||
|
||||
config R8169_VLAN
|
||||
bool "VLAN support"
|
||||
depends on R8169 && VLAN_8021Q
|
||||
---help---
|
||||
Say Y here for the r8169 driver to support the functions required
|
||||
by the kernel 802.1Q code.
|
||||
|
||||
If in doubt, say Y.
|
||||
|
||||
config SB1250_MAC
|
||||
tristate "SB1250 Gigabit Ethernet support"
|
||||
depends on SIBYTE_SB1xxx_SOC
|
||||
@@ -2594,14 +2597,9 @@ config CHELSIO_T1_1G
|
||||
Enables support for Chelsio's gigabit Ethernet PCI cards. If you
|
||||
are using only 10G cards say 'N' here.
|
||||
|
||||
config CHELSIO_T3_DEPENDS
|
||||
tristate
|
||||
depends on PCI && INET
|
||||
default y
|
||||
|
||||
config CHELSIO_T3
|
||||
tristate "Chelsio Communications T3 10Gb Ethernet support"
|
||||
depends on CHELSIO_T3_DEPENDS
|
||||
depends on PCI && INET
|
||||
select FW_LOADER
|
||||
select MDIO
|
||||
help
|
||||
@@ -2619,14 +2617,9 @@ config CHELSIO_T3
|
||||
To compile this driver as a module, choose M here: the module
|
||||
will be called cxgb3.
|
||||
|
||||
config CHELSIO_T4_DEPENDS
|
||||
tristate
|
||||
depends on PCI && INET
|
||||
default y
|
||||
|
||||
config CHELSIO_T4
|
||||
tristate "Chelsio Communications T4 Ethernet support"
|
||||
depends on CHELSIO_T4_DEPENDS
|
||||
depends on PCI
|
||||
select FW_LOADER
|
||||
select MDIO
|
||||
help
|
||||
@@ -2644,14 +2637,9 @@ config CHELSIO_T4
|
||||
To compile this driver as a module choose M here; the module
|
||||
will be called cxgb4.
|
||||
|
||||
config CHELSIO_T4VF_DEPENDS
|
||||
tristate
|
||||
depends on PCI && INET
|
||||
default y
|
||||
|
||||
config CHELSIO_T4VF
|
||||
tristate "Chelsio Communications T4 Virtual Function Ethernet support"
|
||||
depends on CHELSIO_T4VF_DEPENDS
|
||||
depends on PCI
|
||||
help
|
||||
This driver supports Chelsio T4-based gigabit and 10Gb Ethernet
|
||||
adapters with PCI-E SR-IOV Virtual Functions.
|
||||
@@ -2966,12 +2954,38 @@ config XEN_NETDEV_FRONTEND
|
||||
select XEN_XENBUS_FRONTEND
|
||||
default y
|
||||
help
|
||||
The network device frontend driver allows the kernel to
|
||||
access network devices exported exported by a virtual
|
||||
machine containing a physical network device driver. The
|
||||
frontend driver is intended for unprivileged guest domains;
|
||||
if you are compiling a kernel for a Xen guest, you almost
|
||||
certainly want to enable this.
|
||||
This driver provides support for Xen paravirtual network
|
||||
devices exported by a Xen network driver domain (often
|
||||
domain 0).
|
||||
|
||||
The corresponding Linux backend driver is enabled by the
|
||||
CONFIG_XEN_NETDEV_BACKEND option.
|
||||
|
||||
If you are compiling a kernel for use as Xen guest, you
|
||||
should say Y here. To compile this driver as a module, chose
|
||||
M here: the module will be called xen-netfront.
|
||||
|
||||
config XEN_NETDEV_BACKEND
|
||||
tristate "Xen backend network device"
|
||||
depends on XEN_BACKEND
|
||||
help
|
||||
This driver allows the kernel to act as a Xen network driver
|
||||
domain which exports paravirtual network devices to other
|
||||
Xen domains. These devices can be accessed by any operating
|
||||
system that implements a compatible front end.
|
||||
|
||||
The corresponding Linux frontend driver is enabled by the
|
||||
CONFIG_XEN_NETDEV_FRONTEND configuration option.
|
||||
|
||||
The backend driver presents a standard network device
|
||||
endpoint for each paravirtual network device to the driver
|
||||
domain network stack. These can then be bridged or routed
|
||||
etc in order to provide full network connectivity.
|
||||
|
||||
If you are compiling a kernel to run in a Xen network driver
|
||||
domain (often this is domain 0) you should say Y here. To
|
||||
compile this driver as a module, chose M here: the module
|
||||
will be called xen-netback.
|
||||
|
||||
config ISERIES_VETH
|
||||
tristate "iSeries Virtual Ethernet driver support"
|
||||
|
||||
Loaded 20 of 1143 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user