Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
9c119ba5
Commit
9c119ba5
authored
Feb 03, 2010
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
parents
a4b97f20
fdd3d631
Changes
23
Show whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
292 additions
and
280 deletions
+292
-280
drivers/bluetooth/Kconfig
drivers/bluetooth/Kconfig
+12
-1
drivers/bluetooth/Makefile
drivers/bluetooth/Makefile
+1
-0
drivers/bluetooth/ath3k.c
drivers/bluetooth/ath3k.c
+187
-0
drivers/bluetooth/bluecard_cs.c
drivers/bluetooth/bluecard_cs.c
+3
-1
drivers/bluetooth/bt3c_cs.c
drivers/bluetooth/bt3c_cs.c
+3
-1
drivers/bluetooth/btuart_cs.c
drivers/bluetooth/btuart_cs.c
+3
-1
drivers/bluetooth/dtl1_cs.c
drivers/bluetooth/dtl1_cs.c
+3
-1
drivers/connector/connector.c
drivers/connector/connector.c
+0
-175
drivers/net/benet/be_main.c
drivers/net/benet/be_main.c
+2
-2
drivers/net/ixgbe/ixgbe_main.c
drivers/net/ixgbe/ixgbe_main.c
+5
-2
drivers/net/netxen/netxen_nic_main.c
drivers/net/netxen/netxen_nic_main.c
+3
-1
drivers/net/sky2.c
drivers/net/sky2.c
+3
-5
drivers/net/usb/cdc_ether.c
drivers/net/usb/cdc_ether.c
+1
-1
include/linux/connector.h
include/linux/connector.h
+0
-32
net/bluetooth/hidp/core.c
net/bluetooth/hidp/core.c
+36
-34
net/bluetooth/l2cap.c
net/bluetooth/l2cap.c
+6
-8
net/dccp/ccid.c
net/dccp/ccid.c
+1
-1
net/dccp/ccid.h
net/dccp/ccid.h
+5
-3
net/dccp/probe.c
net/dccp/probe.c
+2
-2
net/key/af_key.c
net/key/af_key.c
+8
-7
net/netfilter/nf_conntrack_netlink.c
net/netfilter/nf_conntrack_netlink.c
+2
-1
net/netfilter/nf_conntrack_sip.c
net/netfilter/nf_conntrack_sip.c
+1
-1
net/netlink/af_netlink.c
net/netlink/af_netlink.c
+5
-0
No files found.
drivers/bluetooth/Kconfig
View file @
9c119ba5
...
...
@@ -195,5 +195,16 @@ config BT_MRVL_SDIO
Say Y here to compile support for Marvell BT-over-SDIO driver
into the kernel or say M to compile it as module.
endmenu
config BT_ATH3K
tristate "Atheros firmware download driver"
depends on BT_HCIBTUSB
select FW_LOADER
help
Bluetooth firmware download driver.
This driver loads the firmware into the Atheros Bluetooth
chipset.
Say Y here to compile support for "Atheros firmware download driver"
into the kernel or say M to compile it as module (ath3k).
endmenu
drivers/bluetooth/Makefile
View file @
9c119ba5
...
...
@@ -15,6 +15,7 @@ obj-$(CONFIG_BT_HCIBTUART) += btuart_cs.o
obj-$(CONFIG_BT_HCIBTUSB)
+=
btusb.o
obj-$(CONFIG_BT_HCIBTSDIO)
+=
btsdio.o
obj-$(CONFIG_BT_ATH3K)
+=
ath3k.o
obj-$(CONFIG_BT_MRVL)
+=
btmrvl.o
obj-$(CONFIG_BT_MRVL_SDIO)
+=
btmrvl_sdio.o
...
...
drivers/bluetooth/ath3k.c
0 → 100644
View file @
9c119ba5
/*
* Copyright (c) 2008-2009 Atheros Communications Inc.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/errno.h>
#include <linux/device.h>
#include <linux/firmware.h>
#include <linux/usb.h>
#include <net/bluetooth/bluetooth.h>
#define VERSION "1.0"
static
struct
usb_device_id
ath3k_table
[]
=
{
/* Atheros AR3011 */
{
USB_DEVICE
(
0x0CF3
,
0x3000
)
},
{
}
/* Terminating entry */
};
MODULE_DEVICE_TABLE
(
usb
,
ath3k_table
);
#define USB_REQ_DFU_DNLOAD 1
#define BULK_SIZE 4096
struct
ath3k_data
{
struct
usb_device
*
udev
;
u8
*
fw_data
;
u32
fw_size
;
u32
fw_sent
;
};
static
int
ath3k_load_firmware
(
struct
ath3k_data
*
data
,
unsigned
char
*
firmware
,
int
count
)
{
u8
*
send_buf
;
int
err
,
pipe
,
len
,
size
,
sent
=
0
;
BT_DBG
(
"ath3k %p udev %p"
,
data
,
data
->
udev
);
pipe
=
usb_sndctrlpipe
(
data
->
udev
,
0
);
if
((
usb_control_msg
(
data
->
udev
,
pipe
,
USB_REQ_DFU_DNLOAD
,
USB_TYPE_VENDOR
,
0
,
0
,
firmware
,
20
,
USB_CTRL_SET_TIMEOUT
))
<
0
)
{
BT_ERR
(
"Can't change to loading configuration err"
);
return
-
EBUSY
;
}
sent
+=
20
;
count
-=
20
;
send_buf
=
kmalloc
(
BULK_SIZE
,
GFP_ATOMIC
);
if
(
!
send_buf
)
{
BT_ERR
(
"Can't allocate memory chunk for firmware"
);
return
-
ENOMEM
;
}
while
(
count
)
{
size
=
min_t
(
uint
,
count
,
BULK_SIZE
);
pipe
=
usb_sndbulkpipe
(
data
->
udev
,
0x02
);
memcpy
(
send_buf
,
firmware
+
sent
,
size
);
err
=
usb_bulk_msg
(
data
->
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
);
goto
error
;
}
sent
+=
size
;
count
-=
size
;
}
kfree
(
send_buf
);
return
0
;
error:
kfree
(
send_buf
);
return
err
;
}
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
);
struct
ath3k_data
*
data
;
int
size
;
BT_DBG
(
"intf %p id %p"
,
intf
,
id
);
if
(
intf
->
cur_altsetting
->
desc
.
bInterfaceNumber
!=
0
)
return
-
ENODEV
;
data
=
kzalloc
(
sizeof
(
*
data
),
GFP_KERNEL
);
if
(
!
data
)
return
-
ENOMEM
;
data
->
udev
=
udev
;
if
(
request_firmware
(
&
firmware
,
"ath3k-1.fw"
,
&
udev
->
dev
)
<
0
)
{
kfree
(
data
);
return
-
EIO
;
}
size
=
max_t
(
uint
,
firmware
->
size
,
4096
);
data
->
fw_data
=
kmalloc
(
size
,
GFP_KERNEL
);
if
(
!
data
->
fw_data
)
{
release_firmware
(
firmware
);
kfree
(
data
);
return
-
ENOMEM
;
}
memcpy
(
data
->
fw_data
,
firmware
->
data
,
firmware
->
size
);
data
->
fw_size
=
firmware
->
size
;
data
->
fw_sent
=
0
;
release_firmware
(
firmware
);
usb_set_intfdata
(
intf
,
data
);
if
(
ath3k_load_firmware
(
data
,
data
->
fw_data
,
data
->
fw_size
))
{
usb_set_intfdata
(
intf
,
NULL
);
return
-
EIO
;
}
return
0
;
}
static
void
ath3k_disconnect
(
struct
usb_interface
*
intf
)
{
struct
ath3k_data
*
data
=
usb_get_intfdata
(
intf
);
BT_DBG
(
"ath3k_disconnect intf %p"
,
intf
);
kfree
(
data
->
fw_data
);
kfree
(
data
);
}
static
struct
usb_driver
ath3k_driver
=
{
.
name
=
"ath3k"
,
.
probe
=
ath3k_probe
,
.
disconnect
=
ath3k_disconnect
,
.
id_table
=
ath3k_table
,
};
static
int
__init
ath3k_init
(
void
)
{
BT_INFO
(
"Atheros AR30xx firmware driver ver %s"
,
VERSION
);
return
usb_register
(
&
ath3k_driver
);
}
static
void
__exit
ath3k_exit
(
void
)
{
usb_deregister
(
&
ath3k_driver
);
}
module_init
(
ath3k_init
);
module_exit
(
ath3k_exit
);
MODULE_AUTHOR
(
"Atheros Communications"
);
MODULE_DESCRIPTION
(
"Atheros AR30xx firmware driver"
);
MODULE_VERSION
(
VERSION
);
MODULE_LICENSE
(
"GPL"
);
MODULE_FIRMWARE
(
"ath3k-1.fw"
);
drivers/bluetooth/bluecard_cs.c
View file @
9c119ba5
...
...
@@ -503,7 +503,9 @@ static irqreturn_t bluecard_interrupt(int irq, void *dev_inst)
unsigned
int
iobase
;
unsigned
char
reg
;
BUG_ON
(
!
info
->
hdev
);
if
(
!
info
||
!
info
->
hdev
)
/* our irq handler is shared */
return
IRQ_NONE
;
if
(
!
test_bit
(
CARD_READY
,
&
(
info
->
hw_state
)))
return
IRQ_HANDLED
;
...
...
drivers/bluetooth/bt3c_cs.c
View file @
9c119ba5
...
...
@@ -345,7 +345,9 @@ static irqreturn_t bt3c_interrupt(int irq, void *dev_inst)
int
iir
;
irqreturn_t
r
=
IRQ_NONE
;
BUG_ON
(
!
info
->
hdev
);
if
(
!
info
||
!
info
->
hdev
)
/* our irq handler is shared */
return
IRQ_NONE
;
iobase
=
info
->
p_dev
->
io
.
BasePort1
;
...
...
drivers/bluetooth/btuart_cs.c
View file @
9c119ba5
...
...
@@ -295,7 +295,9 @@ static irqreturn_t btuart_interrupt(int irq, void *dev_inst)
int
iir
,
lsr
;
irqreturn_t
r
=
IRQ_NONE
;
BUG_ON
(
!
info
->
hdev
);
if
(
!
info
||
!
info
->
hdev
)
/* our irq handler is shared */
return
IRQ_NONE
;
iobase
=
info
->
p_dev
->
io
.
BasePort1
;
...
...
drivers/bluetooth/dtl1_cs.c
View file @
9c119ba5
...
...
@@ -299,7 +299,9 @@ static irqreturn_t dtl1_interrupt(int irq, void *dev_inst)
int
iir
,
lsr
;
irqreturn_t
r
=
IRQ_NONE
;
BUG_ON
(
!
info
->
hdev
);
if
(
!
info
||
!
info
->
hdev
)
/* our irq handler is shared */
return
IRQ_NONE
;
iobase
=
info
->
p_dev
->
io
.
BasePort1
;
...
...
drivers/connector/connector.c
View file @
9c119ba5
...
...
@@ -36,17 +36,6 @@ MODULE_LICENSE("GPL");
MODULE_AUTHOR
(
"Evgeniy Polyakov <zbr@ioremap.net>"
);
MODULE_DESCRIPTION
(
"Generic userspace <-> kernelspace connector."
);
static
u32
cn_idx
=
CN_IDX_CONNECTOR
;
static
u32
cn_val
=
CN_VAL_CONNECTOR
;
module_param
(
cn_idx
,
uint
,
0
);
module_param
(
cn_val
,
uint
,
0
);
MODULE_PARM_DESC
(
cn_idx
,
"Connector's main device idx."
);
MODULE_PARM_DESC
(
cn_val
,
"Connector's main device val."
);
static
DEFINE_MUTEX
(
notify_lock
);
static
LIST_HEAD
(
notify_list
);
static
struct
cn_dev
cdev
;
static
int
cn_already_initialized
;
...
...
@@ -209,54 +198,6 @@ static void cn_rx_skb(struct sk_buff *__skb)
}
}
/*
* Notification routing.
*
* Gets id and checks if there are notification request for it's idx
* and val. If there are such requests notify the listeners with the
* given notify event.
*
*/
static
void
cn_notify
(
struct
cb_id
*
id
,
u32
notify_event
)
{
struct
cn_ctl_entry
*
ent
;
mutex_lock
(
&
notify_lock
);
list_for_each_entry
(
ent
,
&
notify_list
,
notify_entry
)
{
int
i
;
struct
cn_notify_req
*
req
;
struct
cn_ctl_msg
*
ctl
=
ent
->
msg
;
int
idx_found
,
val_found
;
idx_found
=
val_found
=
0
;
req
=
(
struct
cn_notify_req
*
)
ctl
->
data
;
for
(
i
=
0
;
i
<
ctl
->
idx_notify_num
;
++
i
,
++
req
)
{
if
(
id
->
idx
>=
req
->
first
&&
id
->
idx
<
req
->
first
+
req
->
range
)
{
idx_found
=
1
;
break
;
}
}
for
(
i
=
0
;
i
<
ctl
->
val_notify_num
;
++
i
,
++
req
)
{
if
(
id
->
val
>=
req
->
first
&&
id
->
val
<
req
->
first
+
req
->
range
)
{
val_found
=
1
;
break
;
}
}
if
(
idx_found
&&
val_found
)
{
struct
cn_msg
m
=
{
.
ack
=
notify_event
,
};
memcpy
(
&
m
.
id
,
id
,
sizeof
(
m
.
id
));
cn_netlink_send
(
&
m
,
ctl
->
group
,
GFP_KERNEL
);
}
}
mutex_unlock
(
&
notify_lock
);
}
/*
* Callback add routing - adds callback with given ID and name.
* If there is registered callback with the same ID it will not be added.
...
...
@@ -276,8 +217,6 @@ int cn_add_callback(struct cb_id *id, char *name,
if
(
err
)
return
err
;
cn_notify
(
id
,
0
);
return
0
;
}
EXPORT_SYMBOL_GPL
(
cn_add_callback
);
...
...
@@ -295,111 +234,9 @@ void cn_del_callback(struct cb_id *id)
struct
cn_dev
*
dev
=
&
cdev
;
cn_queue_del_callback
(
dev
->
cbdev
,
id
);
cn_notify
(
id
,
1
);
}
EXPORT_SYMBOL_GPL
(
cn_del_callback
);
/*
* Checks two connector's control messages to be the same.
* Returns 1 if they are the same or if the first one is corrupted.
*/
static
int
cn_ctl_msg_equals
(
struct
cn_ctl_msg
*
m1
,
struct
cn_ctl_msg
*
m2
)
{
int
i
;
struct
cn_notify_req
*
req1
,
*
req2
;
if
(
m1
->
idx_notify_num
!=
m2
->
idx_notify_num
)
return
0
;
if
(
m1
->
val_notify_num
!=
m2
->
val_notify_num
)
return
0
;
if
(
m1
->
len
!=
m2
->
len
)
return
0
;
if
((
m1
->
idx_notify_num
+
m1
->
val_notify_num
)
*
sizeof
(
*
req1
)
!=
m1
->
len
)
return
1
;
req1
=
(
struct
cn_notify_req
*
)
m1
->
data
;
req2
=
(
struct
cn_notify_req
*
)
m2
->
data
;
for
(
i
=
0
;
i
<
m1
->
idx_notify_num
;
++
i
)
{
if
(
req1
->
first
!=
req2
->
first
||
req1
->
range
!=
req2
->
range
)
return
0
;
req1
++
;
req2
++
;
}
for
(
i
=
0
;
i
<
m1
->
val_notify_num
;
++
i
)
{
if
(
req1
->
first
!=
req2
->
first
||
req1
->
range
!=
req2
->
range
)
return
0
;
req1
++
;
req2
++
;
}
return
1
;
}
/*
* Main connector device's callback.
*
* Used for notification of a request's processing.
*/
static
void
cn_callback
(
struct
cn_msg
*
msg
,
struct
netlink_skb_parms
*
nsp
)
{
struct
cn_ctl_msg
*
ctl
;
struct
cn_ctl_entry
*
ent
;
u32
size
;
if
(
msg
->
len
<
sizeof
(
*
ctl
))
return
;
ctl
=
(
struct
cn_ctl_msg
*
)
msg
->
data
;
size
=
(
sizeof
(
*
ctl
)
+
((
ctl
->
idx_notify_num
+
ctl
->
val_notify_num
)
*
sizeof
(
struct
cn_notify_req
)));
if
(
msg
->
len
!=
size
)
return
;
if
(
ctl
->
len
+
sizeof
(
*
ctl
)
!=
msg
->
len
)
return
;
/*
* Remove notification.
*/
if
(
ctl
->
group
==
0
)
{
struct
cn_ctl_entry
*
n
;
mutex_lock
(
&
notify_lock
);
list_for_each_entry_safe
(
ent
,
n
,
&
notify_list
,
notify_entry
)
{
if
(
cn_ctl_msg_equals
(
ent
->
msg
,
ctl
))
{
list_del
(
&
ent
->
notify_entry
);
kfree
(
ent
);
}
}
mutex_unlock
(
&
notify_lock
);
return
;
}
size
+=
sizeof
(
*
ent
);
ent
=
kzalloc
(
size
,
GFP_KERNEL
);
if
(
!
ent
)
return
;
ent
->
msg
=
(
struct
cn_ctl_msg
*
)(
ent
+
1
);
memcpy
(
ent
->
msg
,
ctl
,
size
-
sizeof
(
*
ent
));
mutex_lock
(
&
notify_lock
);
list_add
(
&
ent
->
notify_entry
,
&
notify_list
);
mutex_unlock
(
&
notify_lock
);
}
static
int
cn_proc_show
(
struct
seq_file
*
m
,
void
*
v
)
{
struct
cn_queue_dev
*
dev
=
cdev
.
cbdev
;
...
...
@@ -437,11 +274,8 @@ static const struct file_operations cn_file_ops = {
static
int
__devinit
cn_init
(
void
)
{
struct
cn_dev
*
dev
=
&
cdev
;
int
err
;
dev
->
input
=
cn_rx_skb
;
dev
->
id
.
idx
=
cn_idx
;
dev
->
id
.
val
=
cn_val
;
dev
->
nls
=
netlink_kernel_create
(
&
init_net
,
NETLINK_CONNECTOR
,
CN_NETLINK_USERS
+
0xf
,
...
...
@@ -457,14 +291,6 @@ static int __devinit cn_init(void)
cn_already_initialized
=
1
;
err
=
cn_add_callback
(
&
dev
->
id
,
"connector"
,
&
cn_callback
);
if
(
err
)
{
cn_already_initialized
=
0
;
cn_queue_free_dev
(
dev
->
cbdev
);
netlink_kernel_release
(
dev
->
nls
);
return
-
EINVAL
;
}
proc_net_fops_create
(
&
init_net
,
"connector"
,
S_IRUGO
,
&
cn_file_ops
);
return
0
;
...
...
@@ -478,7 +304,6 @@ static void __devexit cn_fini(void)
proc_net_remove
(
&
init_net
,
"connector"
);
cn_del_callback
(
&
dev
->
id
);
cn_queue_free_dev
(
dev
->
cbdev
);
netlink_kernel_release
(
dev
->
nls
);
}
...
...
drivers/net/benet/be_main.c
View file @
9c119ba5
...
...
@@ -1350,7 +1350,7 @@ static irqreturn_t be_intx(int irq, void *dev)
int
isr
;
isr
=
ioread32
(
adapter
->
csr
+
CEV_ISR0_OFFSET
+
be_pci_func
(
adapter
)
*
CEV_ISR_SIZE
);
(
adapter
->
tx_eq
.
q
.
id
/
8
)
*
CEV_ISR_SIZE
);
if
(
!
isr
)
return
IRQ_NONE
;
...
...
@@ -2168,7 +2168,7 @@ static int be_stats_init(struct be_adapter *adapter)
cmd
->
va
=
pci_alloc_consistent
(
adapter
->
pdev
,
cmd
->
size
,
&
cmd
->
dma
);
if
(
cmd
->
va
==
NULL
)
return
-
1
;
memset
(
cmd
->
va
,
cmd
->
size
,
0
);
memset
(
cmd
->
va
,
0
,
cmd
->
size
);
return
0
;
}
...
...
drivers/net/ixgbe/ixgbe_main.c
View file @
9c119ba5
...
...
@@ -5384,7 +5384,7 @@ static int ixgbe_tx_map(struct ixgbe_adapter *adapter,
ixgbe_unmap_and_free_tx_resource
(
adapter
,
tx_buffer_info
);
}
return
count
;
return
0
;
}
static
void
ixgbe_tx_queue
(
struct
ixgbe_adapter
*
adapter
,
...
...
@@ -5534,8 +5534,11 @@ static u16 ixgbe_select_queue(struct net_device *dev, struct sk_buff *skb)
struct
ixgbe_adapter
*
adapter
=
netdev_priv
(
dev
);
int
txq
=
smp_processor_id
();
if
(
adapter
->
flags
&
IXGBE_FLAG_FDIR_HASH_CAPABLE
)
if
(
adapter
->
flags
&
IXGBE_FLAG_FDIR_HASH_CAPABLE
)
{
while
(
unlikely
(
txq
>=
dev
->
real_num_tx_queues
))
txq
-=
dev
->
real_num_tx_queues
;
return
txq
;
}
#ifdef IXGBE_FCOE
if
((
adapter
->
flags
&
IXGBE_FLAG_FCOE_ENABLED
)
&&
...
...
drivers/net/netxen/netxen_nic_main.c
View file @
9c119ba5
...
...
@@ -1995,7 +1995,7 @@ static void netxen_tx_timeout_task(struct work_struct *work)
netif_wake_queue
(
adapter
->
netdev
);
clear_bit
(
__NX_RESETTING
,
&
adapter
->
state
);
return
;
}
else
{
clear_bit
(
__NX_RESETTING
,
&
adapter
->
state
);
if
(
!
netxen_nic_reset_context
(
adapter
))
{
...
...
@@ -2323,7 +2323,9 @@ netxen_detach_work(struct work_struct *work)
netxen_nic_down
(
adapter
,
netdev
);
rtnl_lock
();
netxen_nic_detach
(
adapter
);
rtnl_unlock
();
status
=
NXRD32
(
adapter
,
NETXEN_PEG_HALT_STATUS1
);
...
...
drivers/net/sky2.c
View file @
9c119ba5
...
...
@@ -1025,11 +1025,8 @@ static void sky2_prefetch_init(struct sky2_hw *hw, u32 qaddr,
static
inline
struct
sky2_tx_le
*
get_tx_le
(
struct
sky2_port
*
sky2
,
u16
*
slot
)
{
struct
sky2_tx_le
*
le
=
sky2
->
tx_le
+
*
slot
;
struct
tx_ring_info
*
re
=
sky2
->
tx_ring
+
*
slot
;
*
slot
=
RING_NEXT
(
*
slot
,
sky2
->
tx_ring_size
);
re
->
flags
=
0
;
re
->
skb
=
NULL
;
le
->
ctrl
=
0
;
return
le
;
}
...
...
@@ -1622,8 +1619,7 @@ static unsigned tx_le_req(const struct sk_buff *skb)
return
count
;
}
static
void
sky2_tx_unmap
(
struct
pci_dev
*
pdev
,
const
struct
tx_ring_info
*
re
)
static
void
sky2_tx_unmap
(
struct
pci_dev
*
pdev
,
struct
tx_ring_info
*
re
)
{
if
(
re
->
flags
&
TX_MAP_SINGLE
)
pci_unmap_single
(
pdev
,
pci_unmap_addr
(
re
,
mapaddr
),
...
...
@@ -1633,6 +1629,7 @@ static void sky2_tx_unmap(struct pci_dev *pdev,
pci_unmap_page
(
pdev
,
pci_unmap_addr
(
re
,
mapaddr
),
pci_unmap_len
(
re
,
maplen
),
PCI_DMA_TODEVICE
);
re
->
flags
=
0
;
}
/*
...
...
@@ -1839,6 +1836,7 @@ static void sky2_tx_complete(struct sky2_port *sky2, u16 done)
dev
->
stats
.
tx_packets
++
;
dev
->
stats
.
tx_bytes
+=
skb
->
len
;
re
->
skb
=
NULL
;
dev_kfree_skb_any
(
skb
);
sky2
->
tx_next
=
RING_NEXT
(
idx
,
sky2
->
tx_ring_size
);
...
...
drivers/net/usb/cdc_ether.c
View file @
9c119ba5
...
...
@@ -419,7 +419,7 @@ static int cdc_manage_power(struct usbnet *dev, int on)
static
const
struct
driver_info
cdc_info
=
{
.
description
=
"CDC Ethernet Device"
,
.
flags
=
FLAG_ETHER
|
FLAG_LINK_INTR
,
.
flags
=
FLAG_ETHER
,
// .check_connect = cdc_check_connect,
.
bind
=
cdc_bind
,
.
unbind
=
usbnet_cdc_unbind
,
...
...
include/linux/connector.h
View file @
9c119ba5
...
...
@@ -24,9 +24,6 @@
#include <linux/types.h>
#define CN_IDX_CONNECTOR 0xffffffff
#define CN_VAL_CONNECTOR 0xffffffff
/*
* Process Events connector unique ids -- used for message routing
*/
...
...
@@ -75,30 +72,6 @@ struct cn_msg {
__u8
data
[
0
];
};
/*
* Notify structure - requests notification about
* registering/unregistering idx/val in range [first, first+range].
*/
struct
cn_notify_req
{
__u32
first
;
__u32
range
;
};
/*
* Main notification control message
* *_notify_num - number of appropriate cn_notify_req structures after
* this struct.
* group - notification receiver's idx.
* len - total length of the attached data.
*/
struct
cn_ctl_msg
{
__u32
idx_notify_num
;
__u32
val_notify_num
;
__u32
group
;
__u32
len
;
__u8
data
[
0
];
};
#ifdef __KERNEL__
#include <asm/atomic.h>
...
...
@@ -151,11 +124,6 @@ struct cn_callback_entry {
u32
seq
,
group
;
};
struct
cn_ctl_entry
{
struct
list_head
notify_entry
;
struct
cn_ctl_msg
*
msg
;
};
struct
cn_dev
{
struct
cb_id
id
;
...
...
net/bluetooth/hidp/core.c
View file @
9c119ba5
...
...
@@ -243,6 +243,39 @@ static void hidp_input_report(struct hidp_session *session, struct sk_buff *skb)
input_sync
(
dev
);
}
static
int
__hidp_send_ctrl_message
(
struct
hidp_session
*
session
,
unsigned
char
hdr
,
unsigned
char
*
data
,
int
size
)
{
struct
sk_buff
*
skb
;
BT_DBG
(
"session %p data %p size %d"
,
session
,
data
,
size
);
if
(
!
(
skb
=
alloc_skb
(
size
+
1
,
GFP_ATOMIC
)))
{
BT_ERR
(
"Can't allocate memory for new frame"
);
return
-
ENOMEM
;
}
*
skb_put
(
skb
,
1
)
=
hdr
;
if
(
data
&&
size
>
0
)
memcpy
(
skb_put
(
skb
,
size
),
data
,
size
);
skb_queue_tail
(
&
session
->
ctrl_transmit
,
skb
);
return
0
;
}
static
inline
int
hidp_send_ctrl_message
(
struct
hidp_session
*
session
,
unsigned
char
hdr
,
unsigned
char
*
data
,
int
size
)
{
int
err
;
err
=
__hidp_send_ctrl_message
(
session
,
hdr
,
data
,
size
);
hidp_schedule
(
session
);
return
err
;
}
static
int
hidp_queue_report
(
struct
hidp_session
*
session
,
unsigned
char
*
data
,
int
size
)
{
...
...
@@ -282,7 +315,9 @@ static int hidp_send_report(struct hidp_session *session, struct hid_report *rep
static
int
hidp_output_raw_report
(
struct
hid_device
*
hid
,
unsigned
char
*
data
,
size_t
count
)
{
if
(
hidp_queue_report
(
hid
->
driver_data
,
data
,
count
))
if
(
hidp_send_ctrl_message
(
hid
->
driver_data
,
HIDP_TRANS_SET_REPORT
|
HIDP_DATA_RTYPE_FEATURE
,
data
,
count
))
return
-
ENOMEM
;
return
count
;
}
...
...
@@ -307,39 +342,6 @@ static inline void hidp_del_timer(struct hidp_session *session)
del_timer
(
&
session
->
timer
);
}
static
int
__hidp_send_ctrl_message
(
struct
hidp_session
*
session
,
unsigned
char
hdr
,
unsigned
char
*
data
,
int
size
)
{
struct
sk_buff
*
skb
;
BT_DBG
(
"session %p data %p size %d"
,
session
,
data
,
size
);
if
(
!
(
skb
=
alloc_skb
(
size
+
1
,
GFP_ATOMIC
)))
{
BT_ERR
(
"Can't allocate memory for new frame"
);
return
-
ENOMEM
;
}
*
skb_put
(
skb
,
1
)
=
hdr
;
if
(
data
&&
size
>
0
)
memcpy
(
skb_put
(
skb
,
size
),
data
,
size
);
skb_queue_tail
(
&
session
->
ctrl_transmit
,
skb
);
return
0
;
}
static
inline
int
hidp_send_ctrl_message
(
struct
hidp_session
*
session
,
unsigned
char
hdr
,
unsigned
char
*
data
,
int
size
)
{
int
err
;
err
=
__hidp_send_ctrl_message
(
session
,
hdr
,
data
,
size
);
hidp_schedule
(
session
);
return
err
;
}
static
void
hidp_process_handshake
(
struct
hidp_session
*
session
,
unsigned
char
param
)
{
...
...
net/bluetooth/l2cap.c
View file @
9c119ba5
...
...
@@ -1368,7 +1368,6 @@ static int l2cap_ertm_send(struct sock *sk)
while
((
skb
=
sk
->
sk_send_head
)
&&
(
!
l2cap_tx_window_full
(
sk
))
&&
!
(
pi
->
conn_state
&
L2CAP_CONN_REMOTE_BUSY
))
{
tx_skb
=
skb_clone
(
skb
,
GFP_ATOMIC
);
if
(
pi
->
remote_max_tx
&&
bt_cb
(
skb
)
->
retries
==
pi
->
remote_max_tx
)
{
...
...
@@ -1376,6 +1375,8 @@ static int l2cap_ertm_send(struct sock *sk)
break
;
}
tx_skb
=
skb_clone
(
skb
,
GFP_ATOMIC
);
bt_cb
(
skb
)
->
retries
++
;
control
=
get_unaligned_le16
(
tx_skb
->
data
+
L2CAP_HDR_SIZE
);
...
...
@@ -3518,7 +3519,6 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
struct
l2cap_pinfo
*
pi
;
u16
control
,
len
;
u8
tx_seq
;
int
err
;
sk
=
l2cap_get_chan_by_scid
(
&
conn
->
chan_list
,
cid
);
if
(
!
sk
)
{
...
...
@@ -3570,13 +3570,11 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
goto
drop
;
if
(
__is_iframe
(
control
))
err
=
l2cap_data_channel_iframe
(
sk
,
control
,
skb
);
l2cap_data_channel_iframe
(
sk
,
control
,
skb
);
else
err
=
l2cap_data_channel_sframe
(
sk
,
control
,
skb
);
l2cap_data_channel_sframe
(
sk
,
control
,
skb
);
if
(
!
err
)
goto
done
;
break
;
case
L2CAP_MODE_STREAMING
:
control
=
get_unaligned_le16
(
skb
->
data
);
...
...
@@ -3602,7 +3600,7 @@ static inline int l2cap_data_channel(struct l2cap_conn *conn, u16 cid, struct sk
else
pi
->
expected_tx_seq
=
tx_seq
+
1
;
err
=
l2cap_sar_reassembly_sdu
(
sk
,
skb
,
control
);
l2cap_sar_reassembly_sdu
(
sk
,
skb
,
control
);
goto
done
;
...
...
net/dccp/ccid.c
View file @
9c119ba5
...
...
@@ -83,7 +83,7 @@ static struct kmem_cache *ccid_kmem_cache_create(int obj_size, char *slab_name_f
va_list
args
;
va_start
(
args
,
fmt
);
vsnprintf
(
slab_name_fmt
,
sizeof
(
slab_name_fmt
)
,
fmt
,
args
);
vsnprintf
(
slab_name_fmt
,
CCID_SLAB_NAME_LENGTH
,
fmt
,
args
);
va_end
(
args
);
slab
=
kmem_cache_create
(
slab_name_fmt
,
sizeof
(
struct
ccid
)
+
obj_size
,
0
,
...
...
net/dccp/ccid.h
View file @
9c119ba5
...
...
@@ -19,7 +19,9 @@
#include <linux/list.h>
#include <linux/module.h>
/* maximum value for a CCID (RFC 4340, 19.5) */
#define CCID_MAX 255
#define CCID_SLAB_NAME_LENGTH 32
struct
tcp_info
;
...
...
@@ -49,8 +51,8 @@ struct ccid_operations {
const
char
*
ccid_name
;
struct
kmem_cache
*
ccid_hc_rx_slab
,
*
ccid_hc_tx_slab
;
char
ccid_hc_rx_slab_name
[
32
];
char
ccid_hc_tx_slab_name
[
32
];
char
ccid_hc_rx_slab_name
[
CCID_SLAB_NAME_LENGTH
];
char
ccid_hc_tx_slab_name
[
CCID_SLAB_NAME_LENGTH
];
__u32
ccid_hc_rx_obj_size
,
ccid_hc_tx_obj_size
;
/* Interface Routines */
...
...
net/dccp/probe.c
View file @
9c119ba5
...
...
@@ -161,7 +161,7 @@ static __init int dccpprobe_init(void)
if
(
!
proc_net_fops_create
(
&
init_net
,
procname
,
S_IRUSR
,
&
dccpprobe_fops
))
goto
err0
;
ret
=
try_then_request_module
((
register_jprobe
(
&
dccp_send_probe
)
==
0
)
,
try_then_request_module
((
ret
=
register_jprobe
(
&
dccp_send_probe
))
==
0
,
"dccp"
);
if
(
ret
)
goto
err1
;
...
...
net/key/af_key.c
View file @
9c119ba5
...
...
@@ -3793,9 +3793,9 @@ static struct pernet_operations pfkey_net_ops = {
static
void
__exit
ipsec_pfkey_exit
(
void
)
{
unregister_pernet_subsys
(
&
pfkey_net_ops
);
xfrm_unregister_km
(
&
pfkeyv2_mgr
);
sock_unregister
(
PF_KEY
);
unregister_pernet_subsys
(
&
pfkey_net_ops
);
proto_unregister
(
&
key_proto
);
}
...
...
@@ -3806,21 +3806,22 @@ static int __init ipsec_pfkey_init(void)
if
(
err
!=
0
)
goto
out
;
err
=
sock_register
(
&
pfkey_family
_ops
);
err
=
register_pernet_subsys
(
&
pfkey_net
_ops
);
if
(
err
!=
0
)
goto
out_unregister_key_proto
;
err
=
sock_register
(
&
pfkey_family_ops
);
if
(
err
!=
0
)
goto
out_unregister_pernet
;
err
=
xfrm_register_km
(
&
pfkeyv2_mgr
);
if
(
err
!=
0
)
goto
out_sock_unregister
;
err
=
register_pernet_subsys
(
&
pfkey_net_ops
);
if
(
err
!=
0
)
goto
out_xfrm_unregister_km
;
out:
return
err
;
out_xfrm_unregister_km:
xfrm_unregister_km
(
&
pfkeyv2_mgr
);
out_sock_unregister:
sock_unregister
(
PF_KEY
);
out_unregister_pernet:
unregister_pernet_subsys
(
&
pfkey_net_ops
);
out_unregister_key_proto:
proto_unregister
(
&
key_proto
);
goto
out
;
...
...
net/netfilter/nf_conntrack_netlink.c
View file @
9c119ba5
...
...
@@ -1437,8 +1437,9 @@ ctnetlink_exp_dump_mask(struct sk_buff *skb,
struct
nlattr
*
nest_parms
;
memset
(
&
m
,
0xFF
,
sizeof
(
m
));
m
.
src
.
u
.
all
=
mask
->
src
.
u
.
all
;
memcpy
(
&
m
.
src
.
u3
,
&
mask
->
src
.
u3
,
sizeof
(
m
.
src
.
u3
));
m
.
src
.
u
.
all
=
mask
->
src
.
u
.
all
;
m
.
dst
.
protonum
=
tuple
->
dst
.
protonum
;
nest_parms
=
nla_nest_start
(
skb
,
CTA_EXPECT_MASK
|
NLA_F_NESTED
);
if
(
!
nest_parms
)
...
...
net/netfilter/nf_conntrack_sip.c
View file @
9c119ba5
...
...
@@ -376,7 +376,7 @@ int ct_sip_get_header(const struct nf_conn *ct, const char *dptr,
dptr
+=
hdr
->
len
;
else
if
(
hdr
->
cname
&&
limit
-
dptr
>=
hdr
->
clen
+
1
&&
strnicmp
(
dptr
,
hdr
->
cname
,
hdr
->
clen
)
==
0
&&
!
isalpha
(
*
(
dptr
+
hdr
->
clen
+
1
)))
!
isalpha
(
*
(
dptr
+
hdr
->
clen
)))
dptr
+=
hdr
->
clen
;
else
continue
;
...
...
net/netlink/af_netlink.c
View file @
9c119ba5
...
...
@@ -455,9 +455,14 @@ static int netlink_create(struct net *net, struct socket *sock, int protocol,
if
(
nl_table
[
protocol
].
registered
&&
try_module_get
(
nl_table
[
protocol
].
module
))
module
=
nl_table
[
protocol
].
module
;
else
err
=
-
EPROTONOSUPPORT
;
cb_mutex
=
nl_table
[
protocol
].
cb_mutex
;
netlink_unlock_table
();
if
(
err
<
0
)
goto
out
;
err
=
__netlink_create
(
net
,
sock
,
cb_mutex
,
protocol
);
if
(
err
<
0
)
goto
out_module
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment