Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
8be7cdcc
Commit
8be7cdcc
authored
Mar 23, 2009
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
Conflicts: drivers/net/ucc_geth.c
parents
ecd41373
61fa9dcf
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
113 additions
and
62 deletions
+113
-62
drivers/dca/dca-sysfs.c
drivers/dca/dca-sysfs.c
+21
-0
drivers/net/Kconfig
drivers/net/Kconfig
+1
-1
drivers/net/benet/be.h
drivers/net/benet/be.h
+1
-0
drivers/net/benet/be_main.c
drivers/net/benet/be_main.c
+34
-26
drivers/net/dm9000.c
drivers/net/dm9000.c
+4
-2
drivers/net/dnet.c
drivers/net/dnet.c
+3
-3
drivers/net/sungem.c
drivers/net/sungem.c
+4
-5
drivers/net/ucc_geth.c
drivers/net/ucc_geth.c
+13
-23
drivers/net/ucc_geth.h
drivers/net/ucc_geth.h
+1
-2
include/linux/dca.h
include/linux/dca.h
+20
-0
net/wireless/nl80211.c
net/wireless/nl80211.c
+11
-0
No files found.
drivers/dca/dca-sysfs.c
View file @
8be7cdcc
/*
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
*
* 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.
*
* The full GNU General Public License is included in this distribution in the
* file called COPYING.
*/
#include <linux/kernel.h>
#include <linux/kernel.h>
#include <linux/spinlock.h>
#include <linux/spinlock.h>
#include <linux/device.h>
#include <linux/device.h>
...
...
drivers/net/Kconfig
View file @
8be7cdcc
...
@@ -1051,7 +1051,7 @@ config NI65
...
@@ -1051,7 +1051,7 @@ config NI65
config DNET
config DNET
tristate "Dave ethernet support (DNET)"
tristate "Dave ethernet support (DNET)"
depends on NET_ETHERNET
depends on NET_ETHERNET
&& HAS_IOMEM
select PHYLIB
select PHYLIB
help
help
The Dave ethernet interface (DNET) is found on Qong Board FPGA.
The Dave ethernet interface (DNET) is found on Qong Board FPGA.
...
...
drivers/net/benet/be.h
View file @
8be7cdcc
...
@@ -194,6 +194,7 @@ struct be_adapter {
...
@@ -194,6 +194,7 @@ struct be_adapter {
struct
be_eq_obj
rx_eq
;
struct
be_eq_obj
rx_eq
;
struct
be_rx_obj
rx_obj
;
struct
be_rx_obj
rx_obj
;
u32
big_page_size
;
/* Compounded page size shared by rx wrbs */
u32
big_page_size
;
/* Compounded page size shared by rx wrbs */
bool
rx_post_starved
;
/* Zero rx frags have been posted to BE */
struct
vlan_group
*
vlan_grp
;
struct
vlan_group
*
vlan_grp
;
u16
num_vlans
;
u16
num_vlans
;
...
...
drivers/net/benet/be_main.c
View file @
8be7cdcc
...
@@ -273,26 +273,6 @@ static void be_rx_eqd_update(struct be_adapter *adapter)
...
@@ -273,26 +273,6 @@ static void be_rx_eqd_update(struct be_adapter *adapter)
rx_eq
->
cur_eqd
=
eqd
;
rx_eq
->
cur_eqd
=
eqd
;
}
}
static
void
be_worker
(
struct
work_struct
*
work
)
{
struct
be_adapter
*
adapter
=
container_of
(
work
,
struct
be_adapter
,
work
.
work
);
int
status
;
/* Check link */
be_link_status_update
(
adapter
);
/* Get Stats */
status
=
be_cmd_get_stats
(
&
adapter
->
ctrl
,
&
adapter
->
stats
.
cmd
);
if
(
!
status
)
netdev_stats_update
(
adapter
);
/* Set EQ delay */
be_rx_eqd_update
(
adapter
);
schedule_delayed_work
(
&
adapter
->
work
,
msecs_to_jiffies
(
1000
));
}
static
struct
net_device_stats
*
be_get_stats
(
struct
net_device
*
dev
)
static
struct
net_device_stats
*
be_get_stats
(
struct
net_device
*
dev
)
{
{
struct
be_adapter
*
adapter
=
netdev_priv
(
dev
);
struct
be_adapter
*
adapter
=
netdev_priv
(
dev
);
...
@@ -493,7 +473,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
...
@@ -493,7 +473,7 @@ static int be_change_mtu(struct net_device *netdev, int new_mtu)
* program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured,
* program them in BE. If more than BE_NUM_VLANS_SUPPORTED are configured,
* set the BE in promiscuous VLAN mode.
* set the BE in promiscuous VLAN mode.
*/
*/
static
void
be_vid
s
_config
(
struct
net_device
*
netdev
)
static
void
be_vid_config
(
struct
net_device
*
netdev
)
{
{
struct
be_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
be_adapter
*
adapter
=
netdev_priv
(
netdev
);
u16
vtag
[
BE_NUM_VLANS_SUPPORTED
];
u16
vtag
[
BE_NUM_VLANS_SUPPORTED
];
...
@@ -536,7 +516,7 @@ static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
...
@@ -536,7 +516,7 @@ static void be_vlan_add_vid(struct net_device *netdev, u16 vid)
adapter
->
num_vlans
++
;
adapter
->
num_vlans
++
;
adapter
->
vlan_tag
[
vid
]
=
1
;
adapter
->
vlan_tag
[
vid
]
=
1
;
be_vid
s
_config
(
netdev
);
be_vid_config
(
netdev
);
}
}
static
void
be_vlan_rem_vid
(
struct
net_device
*
netdev
,
u16
vid
)
static
void
be_vlan_rem_vid
(
struct
net_device
*
netdev
,
u16
vid
)
...
@@ -547,7 +527,7 @@ static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
...
@@ -547,7 +527,7 @@ static void be_vlan_rem_vid(struct net_device *netdev, u16 vid)
adapter
->
vlan_tag
[
vid
]
=
0
;
adapter
->
vlan_tag
[
vid
]
=
0
;
vlan_group_set_device
(
adapter
->
vlan_grp
,
vid
,
NULL
);
vlan_group_set_device
(
adapter
->
vlan_grp
,
vid
,
NULL
);
be_vid
s
_config
(
netdev
);
be_vid_config
(
netdev
);
}
}
static
void
be_set_multicast_filter
(
struct
net_device
*
netdev
)
static
void
be_set_multicast_filter
(
struct
net_device
*
netdev
)
...
@@ -900,8 +880,11 @@ static void be_post_rx_frags(struct be_adapter *adapter)
...
@@ -900,8 +880,11 @@ static void be_post_rx_frags(struct be_adapter *adapter)
page_info
->
last_page_user
=
true
;
page_info
->
last_page_user
=
true
;
if
(
posted
)
{
if
(
posted
)
{
be_rxq_notify
(
&
adapter
->
ctrl
,
rxq
->
id
,
posted
);
atomic_add
(
posted
,
&
rxq
->
used
);
atomic_add
(
posted
,
&
rxq
->
used
);
be_rxq_notify
(
&
adapter
->
ctrl
,
rxq
->
id
,
posted
);
}
else
if
(
atomic_read
(
&
rxq
->
used
)
==
0
)
{
/* Let be_worker replenish when memory is available */
adapter
->
rx_post_starved
=
true
;
}
}
return
;
return
;
...
@@ -1305,6 +1288,31 @@ int be_poll_tx(struct napi_struct *napi, int budget)
...
@@ -1305,6 +1288,31 @@ int be_poll_tx(struct napi_struct *napi, int budget)
return
1
;
return
1
;
}
}
static
void
be_worker
(
struct
work_struct
*
work
)
{
struct
be_adapter
*
adapter
=
container_of
(
work
,
struct
be_adapter
,
work
.
work
);
int
status
;
/* Check link */
be_link_status_update
(
adapter
);
/* Get Stats */
status
=
be_cmd_get_stats
(
&
adapter
->
ctrl
,
&
adapter
->
stats
.
cmd
);
if
(
!
status
)
netdev_stats_update
(
adapter
);
/* Set EQ delay */
be_rx_eqd_update
(
adapter
);
if
(
adapter
->
rx_post_starved
)
{
adapter
->
rx_post_starved
=
false
;
be_post_rx_frags
(
adapter
);
}
schedule_delayed_work
(
&
adapter
->
work
,
msecs_to_jiffies
(
1000
));
}
static
void
be_msix_enable
(
struct
be_adapter
*
adapter
)
static
void
be_msix_enable
(
struct
be_adapter
*
adapter
)
{
{
int
i
,
status
;
int
i
,
status
;
...
@@ -1422,6 +1430,8 @@ static int be_open(struct net_device *netdev)
...
@@ -1422,6 +1430,8 @@ static int be_open(struct net_device *netdev)
if
(
status
!=
0
)
if
(
status
!=
0
)
goto
do_none
;
goto
do_none
;
be_vid_config
(
netdev
);
status
=
be_cmd_set_flow_control
(
ctrl
,
true
,
true
);
status
=
be_cmd_set_flow_control
(
ctrl
,
true
,
true
);
if
(
status
!=
0
)
if
(
status
!=
0
)
goto
if_destroy
;
goto
if_destroy
;
...
@@ -1856,8 +1866,6 @@ static int be_resume(struct pci_dev *pdev)
...
@@ -1856,8 +1866,6 @@ static int be_resume(struct pci_dev *pdev)
pci_set_power_state
(
pdev
,
0
);
pci_set_power_state
(
pdev
,
0
);
pci_restore_state
(
pdev
);
pci_restore_state
(
pdev
);
be_vids_config
(
netdev
);
if
(
netif_running
(
netdev
))
{
if
(
netif_running
(
netdev
))
{
rtnl_lock
();
rtnl_lock
();
be_open
(
netdev
);
be_open
(
netdev
);
...
...
drivers/net/dm9000.c
View file @
8be7cdcc
...
@@ -930,13 +930,15 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
...
@@ -930,13 +930,15 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
struct
net_device
*
dev
=
dev_id
;
struct
net_device
*
dev
=
dev_id
;
board_info_t
*
db
=
netdev_priv
(
dev
);
board_info_t
*
db
=
netdev_priv
(
dev
);
int
int_status
;
int
int_status
;
unsigned
long
flags
;
u8
reg_save
;
u8
reg_save
;
dm9000_dbg
(
db
,
3
,
"entering %s
\n
"
,
__func__
);
dm9000_dbg
(
db
,
3
,
"entering %s
\n
"
,
__func__
);
/* A real interrupt coming */
/* A real interrupt coming */
spin_lock
(
&
db
->
lock
);
/* holders of db->lock must always block IRQs */
spin_lock_irqsave
(
&
db
->
lock
,
flags
);
/* Save previous register address */
/* Save previous register address */
reg_save
=
readb
(
db
->
io_addr
);
reg_save
=
readb
(
db
->
io_addr
);
...
@@ -972,7 +974,7 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
...
@@ -972,7 +974,7 @@ static irqreturn_t dm9000_interrupt(int irq, void *dev_id)
/* Restore previous register address */
/* Restore previous register address */
writeb
(
reg_save
,
db
->
io_addr
);
writeb
(
reg_save
,
db
->
io_addr
);
spin_unlock
(
&
db
->
lock
);
spin_unlock
_irqrestore
(
&
db
->
lock
,
flags
);
return
IRQ_HANDLED
;
return
IRQ_HANDLED
;
}
}
...
...
drivers/net/dnet.c
View file @
8be7cdcc
...
@@ -279,11 +279,11 @@ static int dnet_mii_probe(struct net_device *dev)
...
@@ -279,11 +279,11 @@ static int dnet_mii_probe(struct net_device *dev)
/* attach the mac to the phy */
/* attach the mac to the phy */
if
(
bp
->
capabilities
&
DNET_HAS_RMII
)
{
if
(
bp
->
capabilities
&
DNET_HAS_RMII
)
{
phydev
=
phy_connect
(
dev
,
phydev
->
dev
.
bus_id
,
phydev
=
phy_connect
(
dev
,
dev_name
(
&
phydev
->
dev
)
,
&
dnet_handle_link_change
,
0
,
&
dnet_handle_link_change
,
0
,
PHY_INTERFACE_MODE_RMII
);
PHY_INTERFACE_MODE_RMII
);
}
else
{
}
else
{
phydev
=
phy_connect
(
dev
,
phydev
->
dev
.
bus_id
,
phydev
=
phy_connect
(
dev
,
dev_name
(
&
phydev
->
dev
)
,
&
dnet_handle_link_change
,
0
,
&
dnet_handle_link_change
,
0
,
PHY_INTERFACE_MODE_MII
);
PHY_INTERFACE_MODE_MII
);
}
}
...
@@ -926,7 +926,7 @@ static int __devinit dnet_probe(struct platform_device *pdev)
...
@@ -926,7 +926,7 @@ static int __devinit dnet_probe(struct platform_device *pdev)
phydev
=
bp
->
phy_dev
;
phydev
=
bp
->
phy_dev
;
dev_info
(
&
pdev
->
dev
,
"attached PHY driver [%s] "
dev_info
(
&
pdev
->
dev
,
"attached PHY driver [%s] "
"(mii_bus:phy_addr=%s, irq=%d)
\n
"
,
"(mii_bus:phy_addr=%s, irq=%d)
\n
"
,
phydev
->
drv
->
name
,
phydev
->
dev
.
bus_id
,
phydev
->
irq
);
phydev
->
drv
->
name
,
dev_name
(
&
phydev
->
dev
)
,
phydev
->
irq
);
return
0
;
return
0
;
...
...
drivers/net/sungem.c
View file @
8be7cdcc
...
@@ -2998,8 +2998,11 @@ static const struct net_device_ops gem_netdev_ops = {
...
@@ -2998,8 +2998,11 @@ static const struct net_device_ops gem_netdev_ops = {
.
ndo_do_ioctl
=
gem_ioctl
,
.
ndo_do_ioctl
=
gem_ioctl
,
.
ndo_tx_timeout
=
gem_tx_timeout
,
.
ndo_tx_timeout
=
gem_tx_timeout
,
.
ndo_change_mtu
=
gem_change_mtu
,
.
ndo_change_mtu
=
gem_change_mtu
,
.
ndo_set_mac_address
=
eth_mac_addr
,
.
ndo_validate_addr
=
eth_validate_addr
,
.
ndo_validate_addr
=
eth_validate_addr
,
.
ndo_set_mac_address
=
gem_set_mac_address
,
#ifdef CONFIG_NET_POLL_CONTROLLER
.
ndo_poll_controller
=
gem_poll_controller
,
#endif
};
};
static
int
__devinit
gem_init_one
(
struct
pci_dev
*
pdev
,
static
int
__devinit
gem_init_one
(
struct
pci_dev
*
pdev
,
...
@@ -3161,10 +3164,6 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
...
@@ -3161,10 +3164,6 @@ static int __devinit gem_init_one(struct pci_dev *pdev,
dev
->
watchdog_timeo
=
5
*
HZ
;
dev
->
watchdog_timeo
=
5
*
HZ
;
dev
->
irq
=
pdev
->
irq
;
dev
->
irq
=
pdev
->
irq
;
dev
->
dma
=
0
;
dev
->
dma
=
0
;
dev
->
set_mac_address
=
gem_set_mac_address
;
#ifdef CONFIG_NET_POLL_CONTROLLER
dev
->
poll_controller
=
gem_poll_controller
;
#endif
/* Set that now, in case PM kicks in now */
/* Set that now, in case PM kicks in now */
pci_set_drvdata
(
pdev
,
dev
);
pci_set_drvdata
(
pdev
,
dev
);
...
...
drivers/net/ucc_geth.c
View file @
8be7cdcc
...
@@ -1536,32 +1536,15 @@ static void adjust_link(struct net_device *dev)
...
@@ -1536,32 +1536,15 @@ static void adjust_link(struct net_device *dev)
static
int
init_phy
(
struct
net_device
*
dev
)
static
int
init_phy
(
struct
net_device
*
dev
)
{
{
struct
ucc_geth_private
*
priv
=
netdev_priv
(
dev
);
struct
ucc_geth_private
*
priv
=
netdev_priv
(
dev
);
struct
device_node
*
np
=
priv
->
node
;
struct
ucc_geth_info
*
ug_info
=
priv
->
ug_info
;
struct
device_node
*
phy
,
*
mdio
;
const
phandle
*
ph
;
char
bus_name
[
MII_BUS_ID_SIZE
];
const
unsigned
int
*
id
;
struct
phy_device
*
phydev
;
struct
phy_device
*
phydev
;
char
phy_id
[
BUS_ID_SIZE
];
priv
->
oldlink
=
0
;
priv
->
oldlink
=
0
;
priv
->
oldspeed
=
0
;
priv
->
oldspeed
=
0
;
priv
->
oldduplex
=
-
1
;
priv
->
oldduplex
=
-
1
;
ph
=
of_get_property
(
np
,
"phy-handle"
,
NULL
);
phydev
=
phy_connect
(
dev
,
ug_info
->
phy_bus_id
,
&
adjust_link
,
0
,
phy
=
of_find_node_by_phandle
(
*
ph
);
priv
->
phy_interface
);
mdio
=
of_get_parent
(
phy
);
id
=
of_get_property
(
phy
,
"reg"
,
NULL
);
of_node_put
(
phy
);
of_node_put
(
mdio
);
fsl_pq_mdio_bus_name
(
bus_name
,
mdio
);
snprintf
(
phy_id
,
sizeof
(
phy_id
),
"%s:%02x"
,
bus_name
,
*
id
);
phydev
=
phy_connect
(
dev
,
phy_id
,
&
adjust_link
,
0
,
priv
->
phy_interface
);
if
(
IS_ERR
(
phydev
))
{
if
(
IS_ERR
(
phydev
))
{
printk
(
"%s: Could not attach to PHY
\n
"
,
dev
->
name
);
printk
(
"%s: Could not attach to PHY
\n
"
,
dev
->
name
);
...
@@ -3629,10 +3612,12 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
...
@@ -3629,10 +3612,12 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
ug_info
->
uf_info
.
irq
=
irq_of_parse_and_map
(
np
,
0
);
ug_info
->
uf_info
.
irq
=
irq_of_parse_and_map
(
np
,
0
);
fixed_link
=
of_get_property
(
np
,
"fixed-link"
,
NULL
);
fixed_link
=
of_get_property
(
np
,
"fixed-link"
,
NULL
);
if
(
fixed_link
)
{
if
(
fixed_link
)
{
snprintf
(
ug_info
->
mdio_bus
,
MII_BUS_ID_SIZE
,
"0"
);
snprintf
(
ug_info
->
phy_bus_id
,
sizeof
(
ug_info
->
phy_bus_id
),
ug_info
->
phy_address
=
fixed_link
[
0
]
;
PHY_ID_FMT
,
"0"
,
fixed_link
[
0
])
;
phy
=
NULL
;
phy
=
NULL
;
}
else
{
}
else
{
char
bus_name
[
MII_BUS_ID_SIZE
];
ph
=
of_get_property
(
np
,
"phy-handle"
,
NULL
);
ph
=
of_get_property
(
np
,
"phy-handle"
,
NULL
);
phy
=
of_find_node_by_phandle
(
*
ph
);
phy
=
of_find_node_by_phandle
(
*
ph
);
...
@@ -3643,7 +3628,6 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
...
@@ -3643,7 +3628,6 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
prop
=
of_get_property
(
phy
,
"reg"
,
NULL
);
prop
=
of_get_property
(
phy
,
"reg"
,
NULL
);
if
(
prop
==
NULL
)
if
(
prop
==
NULL
)
return
-
1
;
return
-
1
;
ug_info
->
phy_address
=
*
prop
;
/* Set the bus id */
/* Set the bus id */
mdio
=
of_get_parent
(
phy
);
mdio
=
of_get_parent
(
phy
);
...
@@ -3657,8 +3641,14 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
...
@@ -3657,8 +3641,14 @@ static int ucc_geth_probe(struct of_device* ofdev, const struct of_device_id *ma
if
(
err
)
if
(
err
)
return
-
1
;
return
-
1
;
<<<<<<<
HEAD
:
drivers
/
net
/
ucc_geth
.
c
snprintf
(
ug_info
->
mdio_bus
,
MII_BUS_ID_SIZE
,
"%x"
,
snprintf
(
ug_info
->
mdio_bus
,
MII_BUS_ID_SIZE
,
"%x"
,
res
.
start
&
0xfffff
);
res
.
start
&
0xfffff
);
=======
uec_mdio_bus_name
(
bus_name
,
mdio
);
snprintf
(
ug_info
->
phy_bus_id
,
sizeof
(
ug_info
->
phy_bus_id
),
"%s:%02x"
,
bus_name
,
*
prop
);
>>>>>>>
61
fa9dcf9329cb92c220f7b656410fbe5e72f933
:
drivers
/
net
/
ucc_geth
.
c
}
}
/* get the phy interface type, or default to MII */
/* get the phy interface type, or default to MII */
...
...
drivers/net/ucc_geth.h
View file @
8be7cdcc
...
@@ -1101,8 +1101,7 @@ struct ucc_geth_info {
...
@@ -1101,8 +1101,7 @@ struct ucc_geth_info {
u32
eventRegMask
;
u32
eventRegMask
;
u16
pausePeriod
;
u16
pausePeriod
;
u16
extensionField
;
u16
extensionField
;
u8
phy_address
;
char
phy_bus_id
[
BUS_ID_SIZE
];
char
mdio_bus
[
MII_BUS_ID_SIZE
];
u8
weightfactor
[
NUM_TX_QUEUES
];
u8
weightfactor
[
NUM_TX_QUEUES
];
u8
interruptcoalescingmaxvalue
[
NUM_RX_QUEUES
];
u8
interruptcoalescingmaxvalue
[
NUM_RX_QUEUES
];
u8
l2qt
[
UCC_GETH_VLAN_PRIORITY_MAX
];
u8
l2qt
[
UCC_GETH_VLAN_PRIORITY_MAX
];
...
...
include/linux/dca.h
View file @
8be7cdcc
/*
* Copyright(c) 2007 - 2009 Intel Corporation. All rights reserved.
*
* 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.
*
* The full GNU General Public License is included in this distribution in the
* file called COPYING.
*/
#ifndef DCA_H
#ifndef DCA_H
#define DCA_H
#define DCA_H
/* DCA Provider API */
/* DCA Provider API */
...
...
net/wireless/nl80211.c
View file @
8be7cdcc
...
@@ -1950,6 +1950,11 @@ static int nl80211_get_mesh_params(struct sk_buff *skb,
...
@@ -1950,6 +1950,11 @@ static int nl80211_get_mesh_params(struct sk_buff *skb,
if
(
err
)
if
(
err
)
return
err
;
return
err
;
if
(
!
drv
->
ops
->
get_mesh_params
)
{
err
=
-
EOPNOTSUPP
;
goto
out
;
}
/* Get the mesh params */
/* Get the mesh params */
rtnl_lock
();
rtnl_lock
();
err
=
drv
->
ops
->
get_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cur_params
);
err
=
drv
->
ops
->
get_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cur_params
);
...
@@ -2059,6 +2064,11 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
...
@@ -2059,6 +2064,11 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
if
(
err
)
if
(
err
)
return
err
;
return
err
;
if
(
!
drv
->
ops
->
set_mesh_params
)
{
err
=
-
EOPNOTSUPP
;
goto
out
;
}
/* This makes sure that there aren't more than 32 mesh config
/* This makes sure that there aren't more than 32 mesh config
* parameters (otherwise our bitfield scheme would not work.) */
* parameters (otherwise our bitfield scheme would not work.) */
BUILD_BUG_ON
(
NL80211_MESHCONF_ATTR_MAX
>
32
);
BUILD_BUG_ON
(
NL80211_MESHCONF_ATTR_MAX
>
32
);
...
@@ -2103,6 +2113,7 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
...
@@ -2103,6 +2113,7 @@ static int nl80211_set_mesh_params(struct sk_buff *skb, struct genl_info *info)
err
=
drv
->
ops
->
set_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cfg
,
mask
);
err
=
drv
->
ops
->
set_mesh_params
(
&
drv
->
wiphy
,
dev
,
&
cfg
,
mask
);
rtnl_unlock
();
rtnl_unlock
();
out:
/* cleanup */
/* cleanup */
cfg80211_put_dev
(
drv
);
cfg80211_put_dev
(
drv
);
dev_put
(
dev
);
dev_put
(
dev
);
...
...
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