Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
0827f2b6
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
0827f2b6
编写于
1月 31, 2006
作者:
L
Linus Torvalds
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
上级
70b4d63e
c6f0d75a
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
148 addition
and
109 deletion
+148
-109
arch/ppc/syslib/mv64x60.c
arch/ppc/syslib/mv64x60.c
+2
-2
drivers/net/Kconfig
drivers/net/Kconfig
+25
-3
drivers/net/acenic.c
drivers/net/acenic.c
+4
-0
drivers/net/b44.c
drivers/net/b44.c
+3
-2
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_main.c
+1
-1
drivers/net/mv643xx_eth.c
drivers/net/mv643xx_eth.c
+47
-61
drivers/net/s2io.c
drivers/net/s2io.c
+1
-1
drivers/net/wireless/hostap/Kconfig
drivers/net/wireless/hostap/Kconfig
+1
-1
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2100.c
+26
-23
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.c
+5
-2
drivers/net/wireless/orinoco_cs.c
drivers/net/wireless/orinoco_cs.c
+2
-2
include/net/ieee80211.h
include/net/ieee80211.h
+2
-2
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_rx.c
+19
-7
net/ieee80211/ieee80211_wx.c
net/ieee80211/ieee80211_wx.c
+10
-2
未找到文件。
arch/ppc/syslib/mv64x60.c
浏览文件 @
0827f2b6
...
...
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = {
};
#endif
#if
def CONFIG_MV643XX_ETH
#if
defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
static
struct
resource
mv64x60_eth_shared_resources
[]
=
{
[
0
]
=
{
.
name
=
"ethernet shared base"
,
...
...
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
&
mpsc0_device
,
&
mpsc1_device
,
#endif
#if
def CONFIG_MV643XX_ETH
#if
defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
&
mv64x60_eth_shared_device
,
#endif
#ifdef CONFIG_MV643XX_ETH_0
...
...
drivers/net/Kconfig
浏览文件 @
0827f2b6
...
...
@@ -2034,13 +2034,28 @@ config SKGE
It does not support the link failover and network management
features that "portable" vendor supplied sk98lin driver does.
This driver supports adapters based on the original Yukon chipset:
Marvell 88E8001, Belkin F5D5005, CNet GigaCard, DLink DGE-530T,
Linksys EG1032/EG1064, 3Com 3C940/3C940B, SysKonnect SK-9871/9872.
It does not support the newer Yukon2 chipset: a separate driver,
sky2, is provided for Yukon2-based adapters.
To compile this driver as a module, choose M here: the module
will be called skge. This is recommended.
config SKY2
tristate "SysKonnect Yukon2 support (EXPERIMENTAL)"
depends on PCI && EXPERIMENTAL
select CRC32
---help---
This driver support the Marvell Yukon 2 Gigabit Ethernet adapter.
This driver supports Gigabit Ethernet adapters based on the the
Marvell Yukon 2 chipset:
Marvell 88E8021/88E8022/88E8035/88E8036/88E8038/88E8050/88E8052/
88E8053/88E8055/88E8061/88E8062, SysKonnect SK-9E21D/SK-9S21
This driver does not support the original Yukon chipset: a seperate
driver, skge, is provided for Yukon-based adapters.
To compile this driver as a module, choose M here: the module
will be called sky2. This is recommended.
...
...
@@ -2050,8 +2065,15 @@ config SK98LIN
depends on PCI
---help---
Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
compliant Gigabit Ethernet Adapter. The following adapters are supported
by this driver:
compliant Gigabit Ethernet Adapter.
This driver supports the original Yukon chipset. A cleaner driver is
also available (skge) which seems to work better than this one.
This driver does not support the newer Yukon2 chipset. A seperate
driver, sky2, is provided to support Yukon2-based adapters.
The following adapters are supported by this driver:
- 3Com 3C940 Gigabit LOM Ethernet Adapter
- 3Com 3C941 Gigabit LOM Ethernet Adapter
- Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
...
...
drivers/net/acenic.c
浏览文件 @
0827f2b6
...
...
@@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net_device *dev)
mac1
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
int
tmp
;
mac1
=
mac1
<<
8
;
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
if
(
tmp
<
0
)
{
...
...
@@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net_device *dev)
}
mac2
=
0
;
for
(
i
=
4
;
i
<
8
;
i
++
)
{
int
tmp
;
mac2
=
mac2
<<
8
;
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
if
(
tmp
<
0
)
{
...
...
drivers/net/b44.c
浏览文件 @
0827f2b6
...
...
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
b44_init_rings
(
bp
);
b44_init_hw
(
bp
);
netif_carrier_off
(
dev
);
b44_check_phy
(
bp
);
err
=
request_irq
(
dev
->
irq
,
b44_interrupt
,
SA_SHIRQ
,
dev
->
name
,
dev
);
...
...
@@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev)
#endif
b44_halt
(
bp
);
b44_free_rings
(
bp
);
netif_carrier_off
(
bp
->
dev
);
netif_carrier_off
(
dev
);
spin_unlock_irq
(
&
bp
->
lock
);
...
...
@@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
dev
->
irq
=
pdev
->
irq
;
SET_ETHTOOL_OPS
(
dev
,
&
b44_ethtool_ops
);
netif_carrier_off
(
dev
);
err
=
b44_get_invariants
(
bp
);
if
(
err
)
{
printk
(
KERN_ERR
PFX
"Problem fetching invariants of chip, "
...
...
drivers/net/bonding/bond_main.c
浏览文件 @
0827f2b6
...
...
@@ -576,7 +576,7 @@ static int bond_update_speed_duplex(struct slave *slave)
slave
->
duplex
=
DUPLEX_FULL
;
if
(
slave_dev
->
ethtool_ops
)
{
u32
res
;
int
res
;
if
(
!
slave_dev
->
ethtool_ops
->
get_settings
)
{
return
-
1
;
...
...
drivers/net/mv643xx_eth.c
浏览文件 @
0827f2b6
...
...
@@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
netif_rx
(
skb
);
#endif
}
dev
->
last_rx
=
jiffies
;
}
return
received_packets
;
...
...
@@ -461,7 +462,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
*/
static
irqreturn_t
mv643xx_eth_int_handler
(
int
irq
,
void
*
dev_id
,
struct
pt_regs
*
regs
)
struct
pt_regs
*
regs
)
{
struct
net_device
*
dev
=
(
struct
net_device
*
)
dev_id
;
struct
mv643xx_private
*
mp
=
netdev_priv
(
dev
);
...
...
@@ -1047,16 +1048,15 @@ static int mv643xx_poll(struct net_device *dev, int *budget)
static
inline
unsigned
int
has_tiny_unaligned_frags
(
struct
sk_buff
*
skb
)
{
unsigned
int
frag
;
skb_frag_t
*
fragp
;
unsigned
int
frag
;
skb_frag_t
*
fragp
;
for
(
frag
=
0
;
frag
<
skb_shinfo
(
skb
)
->
nr_frags
;
frag
++
)
{
fragp
=
&
skb_shinfo
(
skb
)
->
frags
[
frag
];
if
(
fragp
->
size
<=
8
&&
fragp
->
page_offset
&
0x7
)
return
1
;
}
return
0
;
for
(
frag
=
0
;
frag
<
skb_shinfo
(
skb
)
->
nr_frags
;
frag
++
)
{
fragp
=
&
skb_shinfo
(
skb
)
->
frags
[
frag
];
if
(
fragp
->
size
<=
8
&&
fragp
->
page_offset
&
0x7
)
return
1
;
}
return
0
;
}
...
...
@@ -2137,26 +2137,26 @@ static void eth_port_set_multicast_list(struct net_device *dev)
*/
if
((
dev
->
flags
&
IFF_PROMISC
)
||
(
dev
->
flags
&
IFF_ALLMULTI
))
{
for
(
table_index
=
0
;
table_index
<=
0xFC
;
table_index
+=
4
)
{
/* Set all entries in DA filter special multicast
* table (Ex_dFSMT)
* Set for ETH_Q0 for now
* Bits
* 0 Accept=1, Drop=0
* 3-1 Queue ETH_Q0=0
* 7-4 Reserved = 0;
*/
mv_write
(
MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE
(
eth_port_num
)
+
table_index
,
0x01010101
);
/* Set all entries in DA filter other multicast
* table (Ex_dFOMT)
* Set for ETH_Q0 for now
* Bits
* 0 Accept=1, Drop=0
* 3-1 Queue ETH_Q0=0
* 7-4 Reserved = 0;
*/
mv_write
(
MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE
(
eth_port_num
)
+
table_index
,
0x01010101
);
}
/* Set all entries in DA filter special multicast
* table (Ex_dFSMT)
* Set for ETH_Q0 for now
* Bits
* 0 Accept=1, Drop=0
* 3-1 Queue ETH_Q0=0
* 7-4 Reserved = 0;
*/
mv_write
(
MV643XX_ETH_DA_FILTER_SPECIAL_MULTICAST_TABLE_BASE
(
eth_port_num
)
+
table_index
,
0x01010101
);
/* Set all entries in DA filter other multicast
* table (Ex_dFOMT)
* Set for ETH_Q0 for now
* Bits
* 0 Accept=1, Drop=0
* 3-1 Queue ETH_Q0=0
* 7-4 Reserved = 0;
*/
mv_write
(
MV643XX_ETH_DA_FILTER_OTHER_MULTICAST_TABLE_BASE
(
eth_port_num
)
+
table_index
,
0x01010101
);
}
return
;
}
...
...
@@ -2617,7 +2617,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
struct
eth_tx_desc
*
current_descriptor
;
struct
eth_tx_desc
*
first_descriptor
;
u32
command
;
unsigned
long
flags
;
/* Do not process Tx ring in case of Tx ring resource error */
if
(
mp
->
tx_resource_err
)
...
...
@@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
return
ETH_ERROR
;
}
spin_lock_irqsave
(
&
mp
->
lock
,
flags
);
mp
->
tx_ring_skbs
++
;
BUG_ON
(
mp
->
tx_ring_skbs
>
mp
->
tx_ring_size
);
...
...
@@ -2685,15 +2682,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
mp
->
tx_resource_err
=
1
;
mp
->
tx_curr_desc_q
=
tx_first_desc
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_QUEUE_LAST_RESOURCE
;
}
mp
->
tx_curr_desc_q
=
tx_next_desc
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_OK
;
}
#else
...
...
@@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
int
tx_desc_used
;
struct
eth_tx_desc
*
current_descriptor
;
unsigned
int
command_status
;
unsigned
long
flags
;
/* Do not process Tx ring in case of Tx ring resource error */
if
(
mp
->
tx_resource_err
)
return
ETH_QUEUE_FULL
;
spin_lock_irqsave
(
&
mp
->
lock
,
flags
);
mp
->
tx_ring_skbs
++
;
BUG_ON
(
mp
->
tx_ring_skbs
>
mp
->
tx_ring_size
);
...
...
@@ -2742,12 +2732,9 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
/* Check for ring index overlap in the Tx desc ring */
if
(
tx_desc_curr
==
tx_desc_used
)
{
mp
->
tx_resource_err
=
1
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_QUEUE_LAST_RESOURCE
;
}
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_OK
;
}
#endif
...
...
@@ -2898,8 +2885,10 @@ static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
p_pkt_info
->
return_info
=
mp
->
rx_skb
[
rx_curr_desc
];
p_pkt_info
->
l4i_chk
=
p_rx_desc
->
buf_size
;
/* Clean the return info field to indicate that the packet has been */
/* moved to the upper layers */
/*
* Clean the return info field to indicate that the
* packet has been moved to the upper layers
*/
mp
->
rx_skb
[
rx_curr_desc
]
=
NULL
;
/* Update current index in data structure */
...
...
@@ -2980,7 +2969,7 @@ struct mv643xx_stats {
};
#define MV643XX_STAT(m) sizeof(((struct mv643xx_private *)0)->m), \
offsetof(struct mv643xx_private, m)
offsetof(struct mv643xx_private, m)
static
const
struct
mv643xx_stats
mv643xx_gstrings_stats
[]
=
{
{
"rx_packets"
,
MV643XX_STAT
(
stats
.
rx_packets
)
},
...
...
@@ -3131,9 +3120,8 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
return
0
;
}
static
void
mv643xx_get_drvinfo
(
struct
net_device
*
netdev
,
struct
ethtool_drvinfo
*
drvinfo
)
static
void
mv643xx_get_drvinfo
(
struct
net_device
*
netdev
,
struct
ethtool_drvinfo
*
drvinfo
)
{
strncpy
(
drvinfo
->
driver
,
mv643xx_driver_name
,
32
);
strncpy
(
drvinfo
->
version
,
mv643xx_driver_version
,
32
);
...
...
@@ -3142,39 +3130,37 @@ mv643xx_get_drvinfo(struct net_device *netdev,
drvinfo
->
n_stats
=
MV643XX_STATS_LEN
;
}
static
int
mv643xx_get_stats_count
(
struct
net_device
*
netdev
)
static
int
mv643xx_get_stats_count
(
struct
net_device
*
netdev
)
{
return
MV643XX_STATS_LEN
;
}
static
void
mv643xx_get_ethtool_stats
(
struct
net_device
*
netdev
,
struct
ethtool_stats
*
stats
,
uint64_t
*
data
)
static
void
mv643xx_get_ethtool_stats
(
struct
net_device
*
netdev
,
struct
ethtool_stats
*
stats
,
uint64_t
*
data
)
{
struct
mv643xx_private
*
mp
=
netdev
->
priv
;
int
i
;
eth_update_mib_counters
(
mp
);
for
(
i
=
0
;
i
<
MV643XX_STATS_LEN
;
i
++
)
{
for
(
i
=
0
;
i
<
MV643XX_STATS_LEN
;
i
++
)
{
char
*
p
=
(
char
*
)
mp
+
mv643xx_gstrings_stats
[
i
].
stat_offset
;
data
[
i
]
=
(
mv643xx_gstrings_stats
[
i
].
sizeof_stat
==
data
[
i
]
=
(
mv643xx_gstrings_stats
[
i
].
sizeof_stat
==
sizeof
(
uint64_t
))
?
*
(
uint64_t
*
)
p
:
*
(
uint32_t
*
)
p
;
}
}
static
void
mv643xx_get_strings
(
struct
net_device
*
netdev
,
uint32_t
stringset
,
uint8_t
*
data
)
static
void
mv643xx_get_strings
(
struct
net_device
*
netdev
,
uint32_t
stringset
,
uint8_t
*
data
)
{
int
i
;
switch
(
stringset
)
{
case
ETH_SS_STATS
:
for
(
i
=
0
;
i
<
MV643XX_STATS_LEN
;
i
++
)
{
memcpy
(
data
+
i
*
ETH_GSTRING_LEN
,
mv643xx_gstrings_stats
[
i
].
stat_string
,
ETH_GSTRING_LEN
);
memcpy
(
data
+
i
*
ETH_GSTRING_LEN
,
mv643xx_gstrings_stats
[
i
].
stat_string
,
ETH_GSTRING_LEN
);
}
break
;
}
...
...
drivers/net/s2io.c
浏览文件 @
0827f2b6
...
...
@@ -3586,7 +3586,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
txdp
->
Buffer_Pointer
=
(
u64
)
pci_map_page
(
sp
->
pdev
,
frag
->
page
,
frag
->
page_offset
,
frag
->
size
,
PCI_DMA_TODEVICE
);
txdp
->
Control_1
|
=
TXD_BUFFER0_SIZE
(
frag
->
size
);
txdp
->
Control_1
=
TXD_BUFFER0_SIZE
(
frag
->
size
);
if
(
skb_shinfo
(
skb
)
->
ufo_size
)
txdp
->
Control_1
|=
TXD_UFO_EN
;
}
...
...
drivers/net/wireless/hostap/Kconfig
浏览文件 @
0827f2b6
...
...
@@ -75,7 +75,7 @@ config HOSTAP_PCI
config HOSTAP_CS
tristate "Host AP driver for Prism2/2.5/3 PC Cards"
depends on PCMCIA
!=n
&& HOSTAP
depends on PCMCIA && HOSTAP
---help---
Host AP driver's version for Prism2/2.5/3 PC Cards.
...
...
drivers/net/wireless/ipw2100.c
浏览文件 @
0827f2b6
...
...
@@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
#define SEARCH_SNAPSHOT 1
#define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff))
static
void
ipw2100_snapshot_free
(
struct
ipw2100_priv
*
priv
)
{
int
i
;
if
(
!
priv
->
snapshot
[
0
])
return
;
for
(
i
=
0
;
i
<
0x30
;
i
++
)
kfree
(
priv
->
snapshot
[
i
]);
priv
->
snapshot
[
0
]
=
NULL
;
}
#ifdef CONFIG_IPW2100_DEBUG_C3
static
int
ipw2100_snapshot_alloc
(
struct
ipw2100_priv
*
priv
)
{
int
i
;
...
...
@@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
return
1
;
}
static
void
ipw2100_snapshot_free
(
struct
ipw2100_priv
*
priv
)
{
int
i
;
if
(
!
priv
->
snapshot
[
0
])
return
;
for
(
i
=
0
;
i
<
0x30
;
i
++
)
kfree
(
priv
->
snapshot
[
i
]);
priv
->
snapshot
[
0
]
=
NULL
;
}
static
u32
ipw2100_match_buf
(
struct
ipw2100_priv
*
priv
,
u8
*
in_buf
,
size_t
len
,
int
mode
)
{
...
...
@@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
return
ret
;
}
#endif
/*
*
...
...
@@ -7112,11 +7114,17 @@ static int ipw2100_wx_set_txpow(struct net_device *dev,
{
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
int
err
=
0
,
value
;
if
(
ipw_radio_kill_sw
(
priv
,
wrqu
->
txpower
.
disabled
))
return
-
EINPROGRESS
;
if
(
priv
->
ieee
->
iw_mode
!=
IW_MODE_ADHOC
)
return
0
;
if
((
wrqu
->
txpower
.
flags
&
IW_TXPOW_TYPE
)
!=
IW_TXPOW_DBM
)
return
-
EINVAL
;
if
(
wrqu
->
txpower
.
disabled
==
1
||
wrqu
->
txpower
.
fixed
==
0
)
if
(
wrqu
->
txpower
.
fixed
==
0
)
value
=
IPW_TX_POWER_DEFAULT
;
else
{
if
(
wrqu
->
txpower
.
value
<
IPW_TX_POWER_MIN_DBM
||
...
...
@@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev,
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
if
(
priv
->
ieee
->
iw_mode
!=
IW_MODE_ADHOC
)
{
wrqu
->
power
.
disabled
=
1
;
return
0
;
}
wrqu
->
txpower
.
disabled
=
(
priv
->
status
&
STATUS_RF_KILL_MASK
)
?
1
:
0
;
if
(
priv
->
tx_power
==
IPW_TX_POWER_DEFAULT
)
{
wrqu
->
power
.
fixed
=
0
;
wrqu
->
power
.
value
=
IPW_TX_POWER_MAX_DBM
;
wrqu
->
power
.
disabled
=
1
;
wrqu
->
txpower
.
fixed
=
0
;
wrqu
->
txpower
.
value
=
IPW_TX_POWER_MAX_DBM
;
}
else
{
wrqu
->
power
.
disabled
=
0
;
wrqu
->
power
.
fixed
=
1
;
wrqu
->
power
.
value
=
priv
->
tx_power
;
wrqu
->
txpower
.
fixed
=
1
;
wrqu
->
txpower
.
value
=
priv
->
tx_power
;
}
wrqu
->
power
.
flags
=
IW_TXPOW_DBM
;
wrqu
->
tx
power
.
flags
=
IW_TXPOW_DBM
;
IPW_DEBUG_WX
(
"GET TX Power -> %d
\n
"
,
wrqu
->
power
.
value
);
IPW_DEBUG_WX
(
"GET TX Power -> %d
\n
"
,
wrqu
->
tx
power
.
value
);
return
0
;
}
...
...
drivers/net/wireless/ipw2200.c
浏览文件 @
0827f2b6
...
...
@@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init)
else
IPW_DEBUG_INFO
(
"Auto adhoc creation disabled.
\n
"
);
priv
->
config
&=
~
CFG_STATIC_ESSID
;
priv
->
essid_len
=
0
;
memset
(
priv
->
essid
,
0
,
IW_ESSID_MAX_SIZE
);
if
(
disable
)
{
priv
->
status
|=
STATUS_RF_KILL_SW
;
IPW_DEBUG_INFO
(
"Radio disabled.
\n
"
);
...
...
@@ -11035,7 +11039,6 @@ static int ipw_pci_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
net_dev
->
set_multicast_list
=
ipw_net_set_multicast_list
;
net_dev
->
set_mac_address
=
ipw_net_set_mac_address
;
priv
->
wireless_data
.
spy_data
=
&
priv
->
ieee
->
spy_data
;
priv
->
wireless_data
.
ieee80211
=
priv
->
ieee
;
net_dev
->
wireless_data
=
&
priv
->
wireless_data
;
net_dev
->
wireless_handlers
=
&
ipw_wx_handler_def
;
net_dev
->
ethtool_ops
=
&
ipw_ethtool_ops
;
...
...
@@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev)
/* Free MAC hash list for ADHOC */
for
(
i
=
0
;
i
<
IPW_IBSS_MAC_HASH_SIZE
;
i
++
)
{
list_for_each_safe
(
p
,
q
,
&
priv
->
ibss_mac_hash
[
i
])
{
kfree
(
list_entry
(
p
,
struct
ipw_ibss_seq
,
list
));
list_del
(
p
);
kfree
(
list_entry
(
p
,
struct
ipw_ibss_seq
,
list
));
}
}
...
...
drivers/net/wireless/orinoco_cs.c
浏览文件 @
0827f2b6
...
...
@@ -261,13 +261,13 @@ orinoco_cs_config(dev_link_t *link)
/* Note that the CIS values need to be rescaled */
if
(
cfg
->
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
if
(
conf
.
Vcc
!=
cfg
->
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
)
{
DEBUG
(
2
,
"orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)
\n
"
,
conf
.
Vcc
,
cfg
->
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
);
DEBUG
(
2
,
"orinoco_cs_config: Vcc mismatch (conf.Vcc = %d,
cfg
CIS = %d)
\n
"
,
conf
.
Vcc
,
cfg
->
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
);
if
(
!
ignore_cis_vcc
)
goto
next_entry
;
}
}
else
if
(
dflt
.
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
if
(
conf
.
Vcc
!=
dflt
.
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
)
{
DEBUG
(
2
,
"orinoco_cs_config: Vcc mismatch (conf.Vcc = %d, CIS = %d)
\n
"
,
conf
.
Vcc
,
dflt
.
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
);
DEBUG
(
2
,
"orinoco_cs_config: Vcc mismatch (conf.Vcc = %d,
dflt
CIS = %d)
\n
"
,
conf
.
Vcc
,
dflt
.
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
);
if
(
!
ignore_cis_vcc
)
goto
next_entry
;
}
...
...
include/net/ieee80211.h
浏览文件 @
0827f2b6
...
...
@@ -803,9 +803,9 @@ enum ieee80211_state {
#define IEEE80211_24GHZ_MAX_CHANNEL 14
#define IEEE80211_24GHZ_CHANNELS 14
#define IEEE80211_52GHZ_MIN_CHANNEL 3
6
#define IEEE80211_52GHZ_MIN_CHANNEL 3
4
#define IEEE80211_52GHZ_MAX_CHANNEL 165
#define IEEE80211_52GHZ_CHANNELS
32
#define IEEE80211_52GHZ_CHANNELS
131
enum
{
IEEE80211_CH_PASSIVE_ONLY
=
(
1
<<
0
),
...
...
net/ieee80211/ieee80211_rx.c
浏览文件 @
0827f2b6
...
...
@@ -350,6 +350,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
u8
src
[
ETH_ALEN
];
struct
ieee80211_crypt_data
*
crypt
=
NULL
;
int
keyidx
=
0
;
int
can_be_decrypted
=
0
;
hdr
=
(
struct
ieee80211_hdr_4addr
*
)
skb
->
data
;
stats
=
&
ieee
->
stats
;
...
...
@@ -410,12 +411,23 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
return
1
;
}
if
(
is_multicast_ether_addr
(
hdr
->
addr1
)
?
ieee
->
host_mc_decrypt
:
ieee
->
host_decrypt
)
{
can_be_decrypted
=
(
is_multicast_ether_addr
(
hdr
->
addr1
)
||
is_broadcast_ether_addr
(
hdr
->
addr2
))
?
ieee
->
host_mc_decrypt
:
ieee
->
host_decrypt
;
if
(
can_be_decrypted
)
{
int
idx
=
0
;
if
(
skb
->
len
>=
hdrlen
+
3
)
if
(
skb
->
len
>=
hdrlen
+
3
)
{
/* Top two-bits of byte 3 are the key index */
idx
=
skb
->
data
[
hdrlen
+
3
]
>>
6
;
}
/* ieee->crypt[] is WEP_KEY (4) in length. Given that idx
* is only allowed 2-bits of storage, no value of idx can
* be provided via above code that would result in idx
* being out of range */
crypt
=
ieee
->
crypt
[
idx
];
#ifdef NOT_YET
sta
=
NULL
;
...
...
@@ -553,7 +565,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possibly fragmented, possibly encrypted) payload */
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_PROTECTED
)
&&
if
(
(
fc
&
IEEE80211_FCTL_PROTECTED
)
&&
can_be_decrypted
&&
(
keyidx
=
ieee80211_rx_frame_decrypt
(
ieee
,
skb
,
crypt
))
<
0
)
goto
rx_dropped
;
...
...
@@ -617,7 +629,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possible reassembled) full MSDU payload; possibly still
* encrypted/authenticated */
if
(
ieee
->
host_decrypt
&&
(
fc
&
IEEE80211_FCTL_PROTECTED
)
&&
if
(
(
fc
&
IEEE80211_FCTL_PROTECTED
)
&&
can_be_decrypted
&&
ieee80211_rx_frame_decrypt_msdu
(
ieee
,
skb
,
keyidx
,
crypt
))
goto
rx_dropped
;
...
...
@@ -1439,7 +1451,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
break
;
case
IEEE80211_STYPE_PROBE_REQ
:
IEEE80211_DEBUG_MGMT
(
"rec
ie
ved auth (%d)
\n
"
,
IEEE80211_DEBUG_MGMT
(
"rec
ei
ved auth (%d)
\n
"
,
WLAN_FC_GET_STYPE
(
le16_to_cpu
(
header
->
frame_ctl
)));
...
...
@@ -1473,7 +1485,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
break
;
case
IEEE80211_STYPE_AUTH
:
IEEE80211_DEBUG_MGMT
(
"rec
ie
ved auth (%d)
\n
"
,
IEEE80211_DEBUG_MGMT
(
"rec
ei
ved auth (%d)
\n
"
,
WLAN_FC_GET_STYPE
(
le16_to_cpu
(
header
->
frame_ctl
)));
...
...
net/ieee80211/ieee80211_wx.c
浏览文件 @
0827f2b6
...
...
@@ -232,15 +232,18 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
return
start
;
}
#define SCAN_ITEM_SIZE 128
int
ieee80211_wx_get_scan
(
struct
ieee80211_device
*
ieee
,
struct
iw_request_info
*
info
,
union
iwreq_data
*
wrqu
,
char
*
extra
)
{
struct
ieee80211_network
*
network
;
unsigned
long
flags
;
int
err
=
0
;
char
*
ev
=
extra
;
char
*
stop
=
ev
+
IW_SCAN_MAX_DATA
;
char
*
stop
=
ev
+
wrqu
->
data
.
length
;
int
i
=
0
;
IEEE80211_DEBUG_WX
(
"Getting scan
\n
"
);
...
...
@@ -249,6 +252,11 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
list_for_each_entry
(
network
,
&
ieee
->
network_list
,
list
)
{
i
++
;
if
(
stop
-
ev
<
SCAN_ITEM_SIZE
)
{
err
=
-
E2BIG
;
break
;
}
if
(
ieee
->
scan_age
==
0
||
time_after
(
network
->
last_scanned
+
ieee
->
scan_age
,
jiffies
))
ev
=
ipw2100_translate_scan
(
ieee
,
ev
,
stop
,
network
);
...
...
@@ -270,7 +278,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
IEEE80211_DEBUG_WX
(
"exit: %d networks returned.
\n
"
,
i
);
return
0
;
return
err
;
}
int
ieee80211_wx_set_encode
(
struct
ieee80211_device
*
ieee
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录