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
0827f2b6
Commit
0827f2b6
authored
Jan 31, 2006
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'upstream-fixes' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
parents
70b4d63e
c6f0d75a
Changes
14
Show whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
148 additions
and
109 deletions
+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
No files found.
arch/ppc/syslib/mv64x60.c
View file @
0827f2b6
...
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = {
...
@@ -313,7 +313,7 @@ static struct platform_device mpsc1_device = {
};
};
#endif
#endif
#if
def CONFIG_MV643XX_ETH
#if
defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
static
struct
resource
mv64x60_eth_shared_resources
[]
=
{
static
struct
resource
mv64x60_eth_shared_resources
[]
=
{
[
0
]
=
{
[
0
]
=
{
.
name
=
"ethernet shared base"
,
.
name
=
"ethernet shared base"
,
...
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
...
@@ -456,7 +456,7 @@ static struct platform_device *mv64x60_pd_devs[] __initdata = {
&
mpsc0_device
,
&
mpsc0_device
,
&
mpsc1_device
,
&
mpsc1_device
,
#endif
#endif
#if
def CONFIG_MV643XX_ETH
#if
defined(CONFIG_MV643XX_ETH) || defined(CONFIG_MV643XX_ETH_MODULE)
&
mv64x60_eth_shared_device
,
&
mv64x60_eth_shared_device
,
#endif
#endif
#ifdef CONFIG_MV643XX_ETH_0
#ifdef CONFIG_MV643XX_ETH_0
...
...
drivers/net/Kconfig
View file @
0827f2b6
...
@@ -2034,13 +2034,28 @@ config SKGE
...
@@ -2034,13 +2034,28 @@ config SKGE
It does not support the link failover and network management
It does not support the link failover and network management
features that "portable" vendor supplied sk98lin driver does.
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
config SKY2
tristate "SysKonnect Yukon2 support (EXPERIMENTAL)"
tristate "SysKonnect Yukon2 support (EXPERIMENTAL)"
depends on PCI && EXPERIMENTAL
depends on PCI && EXPERIMENTAL
select CRC32
select CRC32
---help---
---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
To compile this driver as a module, choose M here: the module
will be called sky2. This is recommended.
will be called sky2. This is recommended.
...
@@ -2050,8 +2065,15 @@ config SK98LIN
...
@@ -2050,8 +2065,15 @@ config SK98LIN
depends on PCI
depends on PCI
---help---
---help---
Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
Say Y here if you have a Marvell Yukon or SysKonnect SK-98xx/SK-95xx
compliant Gigabit Ethernet Adapter. The following adapters are supported
compliant Gigabit Ethernet Adapter.
by this driver:
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 3C940 Gigabit LOM Ethernet Adapter
- 3Com 3C941 Gigabit LOM Ethernet Adapter
- 3Com 3C941 Gigabit LOM Ethernet Adapter
- Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
- Allied Telesyn AT-2970LX Gigabit Ethernet Adapter
...
...
drivers/net/acenic.c
View file @
0827f2b6
...
@@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net_device *dev)
...
@@ -1002,6 +1002,8 @@ static int __devinit ace_init(struct net_device *dev)
mac1
=
0
;
mac1
=
0
;
for
(
i
=
0
;
i
<
4
;
i
++
)
{
for
(
i
=
0
;
i
<
4
;
i
++
)
{
int
tmp
;
mac1
=
mac1
<<
8
;
mac1
=
mac1
<<
8
;
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
if
(
tmp
<
0
)
{
if
(
tmp
<
0
)
{
...
@@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net_device *dev)
...
@@ -1012,6 +1014,8 @@ static int __devinit ace_init(struct net_device *dev)
}
}
mac2
=
0
;
mac2
=
0
;
for
(
i
=
4
;
i
<
8
;
i
++
)
{
for
(
i
=
4
;
i
<
8
;
i
++
)
{
int
tmp
;
mac2
=
mac2
<<
8
;
mac2
=
mac2
<<
8
;
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
tmp
=
read_eeprom_byte
(
dev
,
0x8c
+
i
);
if
(
tmp
<
0
)
{
if
(
tmp
<
0
)
{
...
...
drivers/net/b44.c
View file @
0827f2b6
...
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
...
@@ -1399,7 +1399,6 @@ static int b44_open(struct net_device *dev)
b44_init_rings
(
bp
);
b44_init_rings
(
bp
);
b44_init_hw
(
bp
);
b44_init_hw
(
bp
);
netif_carrier_off
(
dev
);
b44_check_phy
(
bp
);
b44_check_phy
(
bp
);
err
=
request_irq
(
dev
->
irq
,
b44_interrupt
,
SA_SHIRQ
,
dev
->
name
,
dev
);
err
=
request_irq
(
dev
->
irq
,
b44_interrupt
,
SA_SHIRQ
,
dev
->
name
,
dev
);
...
@@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev)
...
@@ -1464,7 +1463,7 @@ static int b44_close(struct net_device *dev)
#endif
#endif
b44_halt
(
bp
);
b44_halt
(
bp
);
b44_free_rings
(
bp
);
b44_free_rings
(
bp
);
netif_carrier_off
(
bp
->
dev
);
netif_carrier_off
(
dev
);
spin_unlock_irq
(
&
bp
->
lock
);
spin_unlock_irq
(
&
bp
->
lock
);
...
@@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
...
@@ -2000,6 +1999,8 @@ static int __devinit b44_init_one(struct pci_dev *pdev,
dev
->
irq
=
pdev
->
irq
;
dev
->
irq
=
pdev
->
irq
;
SET_ETHTOOL_OPS
(
dev
,
&
b44_ethtool_ops
);
SET_ETHTOOL_OPS
(
dev
,
&
b44_ethtool_ops
);
netif_carrier_off
(
dev
);
err
=
b44_get_invariants
(
bp
);
err
=
b44_get_invariants
(
bp
);
if
(
err
)
{
if
(
err
)
{
printk
(
KERN_ERR
PFX
"Problem fetching invariants of chip, "
printk
(
KERN_ERR
PFX
"Problem fetching invariants of chip, "
...
...
drivers/net/bonding/bond_main.c
View file @
0827f2b6
...
@@ -576,7 +576,7 @@ static int bond_update_speed_duplex(struct slave *slave)
...
@@ -576,7 +576,7 @@ static int bond_update_speed_duplex(struct slave *slave)
slave
->
duplex
=
DUPLEX_FULL
;
slave
->
duplex
=
DUPLEX_FULL
;
if
(
slave_dev
->
ethtool_ops
)
{
if
(
slave_dev
->
ethtool_ops
)
{
u32
res
;
int
res
;
if
(
!
slave_dev
->
ethtool_ops
->
get_settings
)
{
if
(
!
slave_dev
->
ethtool_ops
->
get_settings
)
{
return
-
1
;
return
-
1
;
...
...
drivers/net/mv643xx_eth.c
View file @
0827f2b6
...
@@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
...
@@ -444,6 +444,7 @@ static int mv643xx_eth_receive_queue(struct net_device *dev)
netif_rx
(
skb
);
netif_rx
(
skb
);
#endif
#endif
}
}
dev
->
last_rx
=
jiffies
;
}
}
return
received_packets
;
return
received_packets
;
...
@@ -1054,7 +1055,6 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
...
@@ -1054,7 +1055,6 @@ static inline unsigned int has_tiny_unaligned_frags(struct sk_buff *skb)
fragp
=
&
skb_shinfo
(
skb
)
->
frags
[
frag
];
fragp
=
&
skb_shinfo
(
skb
)
->
frags
[
frag
];
if
(
fragp
->
size
<=
8
&&
fragp
->
page_offset
&
0x7
)
if
(
fragp
->
size
<=
8
&&
fragp
->
page_offset
&
0x7
)
return
1
;
return
1
;
}
}
return
0
;
return
0
;
}
}
...
@@ -2617,7 +2617,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
...
@@ -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
*
current_descriptor
;
struct
eth_tx_desc
*
first_descriptor
;
struct
eth_tx_desc
*
first_descriptor
;
u32
command
;
u32
command
;
unsigned
long
flags
;
/* Do not process Tx ring in case of Tx ring resource error */
/* Do not process Tx ring in case of Tx ring resource error */
if
(
mp
->
tx_resource_err
)
if
(
mp
->
tx_resource_err
)
...
@@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
...
@@ -2634,8 +2633,6 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
return
ETH_ERROR
;
return
ETH_ERROR
;
}
}
spin_lock_irqsave
(
&
mp
->
lock
,
flags
);
mp
->
tx_ring_skbs
++
;
mp
->
tx_ring_skbs
++
;
BUG_ON
(
mp
->
tx_ring_skbs
>
mp
->
tx_ring_size
);
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,
...
@@ -2685,15 +2682,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
mp
->
tx_resource_err
=
1
;
mp
->
tx_resource_err
=
1
;
mp
->
tx_curr_desc_q
=
tx_first_desc
;
mp
->
tx_curr_desc_q
=
tx_first_desc
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_QUEUE_LAST_RESOURCE
;
return
ETH_QUEUE_LAST_RESOURCE
;
}
}
mp
->
tx_curr_desc_q
=
tx_next_desc
;
mp
->
tx_curr_desc_q
=
tx_next_desc
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_OK
;
return
ETH_OK
;
}
}
#else
#else
...
@@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
...
@@ -2704,14 +2697,11 @@ static ETH_FUNC_RET_STATUS eth_port_send(struct mv643xx_private *mp,
int
tx_desc_used
;
int
tx_desc_used
;
struct
eth_tx_desc
*
current_descriptor
;
struct
eth_tx_desc
*
current_descriptor
;
unsigned
int
command_status
;
unsigned
int
command_status
;
unsigned
long
flags
;
/* Do not process Tx ring in case of Tx ring resource error */
/* Do not process Tx ring in case of Tx ring resource error */
if
(
mp
->
tx_resource_err
)
if
(
mp
->
tx_resource_err
)
return
ETH_QUEUE_FULL
;
return
ETH_QUEUE_FULL
;
spin_lock_irqsave
(
&
mp
->
lock
,
flags
);
mp
->
tx_ring_skbs
++
;
mp
->
tx_ring_skbs
++
;
BUG_ON
(
mp
->
tx_ring_skbs
>
mp
->
tx_ring_size
);
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,
...
@@ -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 */
/* Check for ring index overlap in the Tx desc ring */
if
(
tx_desc_curr
==
tx_desc_used
)
{
if
(
tx_desc_curr
==
tx_desc_used
)
{
mp
->
tx_resource_err
=
1
;
mp
->
tx_resource_err
=
1
;
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_QUEUE_LAST_RESOURCE
;
return
ETH_QUEUE_LAST_RESOURCE
;
}
}
spin_unlock_irqrestore
(
&
mp
->
lock
,
flags
);
return
ETH_OK
;
return
ETH_OK
;
}
}
#endif
#endif
...
@@ -2898,8 +2885,10 @@ static ETH_FUNC_RET_STATUS eth_port_receive(struct mv643xx_private *mp,
...
@@ -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
->
return_info
=
mp
->
rx_skb
[
rx_curr_desc
];
p_pkt_info
->
l4i_chk
=
p_rx_desc
->
buf_size
;
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
;
mp
->
rx_skb
[
rx_curr_desc
]
=
NULL
;
/* Update current index in data structure */
/* Update current index in data structure */
...
@@ -3131,8 +3120,7 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
...
@@ -3131,8 +3120,7 @@ mv643xx_get_settings(struct net_device *netdev, struct ethtool_cmd *ecmd)
return
0
;
return
0
;
}
}
static
void
static
void
mv643xx_get_drvinfo
(
struct
net_device
*
netdev
,
mv643xx_get_drvinfo
(
struct
net_device
*
netdev
,
struct
ethtool_drvinfo
*
drvinfo
)
struct
ethtool_drvinfo
*
drvinfo
)
{
{
strncpy
(
drvinfo
->
driver
,
mv643xx_driver_name
,
32
);
strncpy
(
drvinfo
->
driver
,
mv643xx_driver_name
,
32
);
...
@@ -3142,14 +3130,12 @@ mv643xx_get_drvinfo(struct net_device *netdev,
...
@@ -3142,14 +3130,12 @@ mv643xx_get_drvinfo(struct net_device *netdev,
drvinfo
->
n_stats
=
MV643XX_STATS_LEN
;
drvinfo
->
n_stats
=
MV643XX_STATS_LEN
;
}
}
static
int
static
int
mv643xx_get_stats_count
(
struct
net_device
*
netdev
)
mv643xx_get_stats_count
(
struct
net_device
*
netdev
)
{
{
return
MV643XX_STATS_LEN
;
return
MV643XX_STATS_LEN
;
}
}
static
void
static
void
mv643xx_get_ethtool_stats
(
struct
net_device
*
netdev
,
mv643xx_get_ethtool_stats
(
struct
net_device
*
netdev
,
struct
ethtool_stats
*
stats
,
uint64_t
*
data
)
struct
ethtool_stats
*
stats
,
uint64_t
*
data
)
{
{
struct
mv643xx_private
*
mp
=
netdev
->
priv
;
struct
mv643xx_private
*
mp
=
netdev
->
priv
;
...
@@ -3157,15 +3143,15 @@ mv643xx_get_ethtool_stats(struct net_device *netdev,
...
@@ -3157,15 +3143,15 @@ mv643xx_get_ethtool_stats(struct net_device *netdev,
eth_update_mib_counters
(
mp
);
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
;
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
;
sizeof
(
uint64_t
))
?
*
(
uint64_t
*
)
p
:
*
(
uint32_t
*
)
p
;
}
}
}
}
static
void
static
void
mv643xx_get_strings
(
struct
net_device
*
netdev
,
uint32_t
stringset
,
mv643xx_get_strings
(
struct
net_device
*
netdev
,
uint32_t
stringset
,
uint8_t
*
data
)
uint8_t
*
data
)
{
{
int
i
;
int
i
;
...
...
drivers/net/s2io.c
View file @
0827f2b6
...
@@ -3586,7 +3586,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
...
@@ -3586,7 +3586,7 @@ static int s2io_xmit(struct sk_buff *skb, struct net_device *dev)
txdp
->
Buffer_Pointer
=
(
u64
)
pci_map_page
txdp
->
Buffer_Pointer
=
(
u64
)
pci_map_page
(
sp
->
pdev
,
frag
->
page
,
frag
->
page_offset
,
(
sp
->
pdev
,
frag
->
page
,
frag
->
page_offset
,
frag
->
size
,
PCI_DMA_TODEVICE
);
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
)
if
(
skb_shinfo
(
skb
)
->
ufo_size
)
txdp
->
Control_1
|=
TXD_UFO_EN
;
txdp
->
Control_1
|=
TXD_UFO_EN
;
}
}
...
...
drivers/net/wireless/hostap/Kconfig
View file @
0827f2b6
...
@@ -75,7 +75,7 @@ config HOSTAP_PCI
...
@@ -75,7 +75,7 @@ config HOSTAP_PCI
config HOSTAP_CS
config HOSTAP_CS
tristate "Host AP driver for Prism2/2.5/3 PC Cards"
tristate "Host AP driver for Prism2/2.5/3 PC Cards"
depends on PCMCIA
!=n
&& HOSTAP
depends on PCMCIA && HOSTAP
---help---
---help---
Host AP driver's version for Prism2/2.5/3 PC Cards.
Host AP driver's version for Prism2/2.5/3 PC Cards.
...
...
drivers/net/wireless/ipw2100.c
View file @
0827f2b6
...
@@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
...
@@ -2201,6 +2201,17 @@ static int ipw2100_alloc_skb(struct ipw2100_priv *priv,
#define SEARCH_SNAPSHOT 1
#define SEARCH_SNAPSHOT 1
#define SNAPSHOT_ADDR(ofs) (priv->snapshot[((ofs) >> 12) & 0xff] + ((ofs) & 0xfff))
#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
)
static
int
ipw2100_snapshot_alloc
(
struct
ipw2100_priv
*
priv
)
{
{
int
i
;
int
i
;
...
@@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
...
@@ -2221,16 +2232,6 @@ static int ipw2100_snapshot_alloc(struct ipw2100_priv *priv)
return
1
;
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
,
static
u32
ipw2100_match_buf
(
struct
ipw2100_priv
*
priv
,
u8
*
in_buf
,
size_t
len
,
int
mode
)
size_t
len
,
int
mode
)
{
{
...
@@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
...
@@ -2269,6 +2270,7 @@ static u32 ipw2100_match_buf(struct ipw2100_priv *priv, u8 * in_buf,
return
ret
;
return
ret
;
}
}
#endif
/*
/*
*
*
...
@@ -7113,10 +7115,16 @@ static int ipw2100_wx_set_txpow(struct net_device *dev,
...
@@ -7113,10 +7115,16 @@ static int ipw2100_wx_set_txpow(struct net_device *dev,
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
int
err
=
0
,
value
;
int
err
=
0
,
value
;
if
(
ipw_radio_kill_sw
(
priv
,
wrqu
->
txpower
.
disabled
))
return
-
EINPROGRESS
;
if
(
priv
->
ieee
->
iw_mode
!=
IW_MODE_ADHOC
)
if
(
priv
->
ieee
->
iw_mode
!=
IW_MODE_ADHOC
)
return
0
;
if
((
wrqu
->
txpower
.
flags
&
IW_TXPOW_TYPE
)
!=
IW_TXPOW_DBM
)
return
-
EINVAL
;
return
-
EINVAL
;
if
(
wrqu
->
txpower
.
disabled
==
1
||
wrqu
->
txpower
.
fixed
==
0
)
if
(
wrqu
->
txpower
.
fixed
==
0
)
value
=
IPW_TX_POWER_DEFAULT
;
value
=
IPW_TX_POWER_DEFAULT
;
else
{
else
{
if
(
wrqu
->
txpower
.
value
<
IPW_TX_POWER_MIN_DBM
||
if
(
wrqu
->
txpower
.
value
<
IPW_TX_POWER_MIN_DBM
||
...
@@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev,
...
@@ -7151,24 +7159,19 @@ static int ipw2100_wx_get_txpow(struct net_device *dev,
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
struct
ipw2100_priv
*
priv
=
ieee80211_priv
(
dev
);
if
(
priv
->
ieee
->
iw_mode
!=
IW_MODE_ADHOC
)
{
wrqu
->
txpower
.
disabled
=
(
priv
->
status
&
STATUS_RF_KILL_MASK
)
?
1
:
0
;
wrqu
->
power
.
disabled
=
1
;
return
0
;
}
if
(
priv
->
tx_power
==
IPW_TX_POWER_DEFAULT
)
{
if
(
priv
->
tx_power
==
IPW_TX_POWER_DEFAULT
)
{
wrqu
->
power
.
fixed
=
0
;
wrqu
->
txpower
.
fixed
=
0
;
wrqu
->
power
.
value
=
IPW_TX_POWER_MAX_DBM
;
wrqu
->
txpower
.
value
=
IPW_TX_POWER_MAX_DBM
;
wrqu
->
power
.
disabled
=
1
;
}
else
{
}
else
{
wrqu
->
power
.
disabled
=
0
;
wrqu
->
txpower
.
fixed
=
1
;
wrqu
->
power
.
fixed
=
1
;
wrqu
->
txpower
.
value
=
priv
->
tx_power
;
wrqu
->
power
.
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
;
return
0
;
}
}
...
...
drivers/net/wireless/ipw2200.c
View file @
0827f2b6
...
@@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init)
...
@@ -8012,6 +8012,10 @@ static int ipw_sw_reset(struct ipw_priv *priv, int init)
else
else
IPW_DEBUG_INFO
(
"Auto adhoc creation disabled.
\n
"
);
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
)
{
if
(
disable
)
{
priv
->
status
|=
STATUS_RF_KILL_SW
;
priv
->
status
|=
STATUS_RF_KILL_SW
;
IPW_DEBUG_INFO
(
"Radio disabled.
\n
"
);
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)
...
@@ -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_multicast_list
=
ipw_net_set_multicast_list
;
net_dev
->
set_mac_address
=
ipw_net_set_mac_address
;
net_dev
->
set_mac_address
=
ipw_net_set_mac_address
;
priv
->
wireless_data
.
spy_data
=
&
priv
->
ieee
->
spy_data
;
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_data
=
&
priv
->
wireless_data
;
net_dev
->
wireless_handlers
=
&
ipw_wx_handler_def
;
net_dev
->
wireless_handlers
=
&
ipw_wx_handler_def
;
net_dev
->
ethtool_ops
=
&
ipw_ethtool_ops
;
net_dev
->
ethtool_ops
=
&
ipw_ethtool_ops
;
...
@@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev)
...
@@ -11121,8 +11124,8 @@ static void ipw_pci_remove(struct pci_dev *pdev)
/* Free MAC hash list for ADHOC */
/* Free MAC hash list for ADHOC */
for
(
i
=
0
;
i
<
IPW_IBSS_MAC_HASH_SIZE
;
i
++
)
{
for
(
i
=
0
;
i
<
IPW_IBSS_MAC_HASH_SIZE
;
i
++
)
{
list_for_each_safe
(
p
,
q
,
&
priv
->
ibss_mac_hash
[
i
])
{
list_for_each_safe
(
p
,
q
,
&
priv
->
ibss_mac_hash
[
i
])
{
kfree
(
list_entry
(
p
,
struct
ipw_ibss_seq
,
list
));
list_del
(
p
);
list_del
(
p
);
kfree
(
list_entry
(
p
,
struct
ipw_ibss_seq
,
list
));
}
}
}
}
...
...
drivers/net/wireless/orinoco_cs.c
View file @
0827f2b6
...
@@ -261,13 +261,13 @@ orinoco_cs_config(dev_link_t *link)
...
@@ -261,13 +261,13 @@ orinoco_cs_config(dev_link_t *link)
/* Note that the CIS values need to be rescaled */
/* Note that the CIS values need to be rescaled */
if
(
cfg
->
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
if
(
cfg
->
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
if
(
conf
.
Vcc
!=
cfg
->
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
)
{
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
)
if
(
!
ignore_cis_vcc
)
goto
next_entry
;
goto
next_entry
;
}
}
}
else
if
(
dflt
.
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
}
else
if
(
dflt
.
vcc
.
present
&
(
1
<<
CISTPL_POWER_VNOM
))
{
if
(
conf
.
Vcc
!=
dflt
.
vcc
.
param
[
CISTPL_POWER_VNOM
]
/
10000
)
{
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
)
if
(
!
ignore_cis_vcc
)
goto
next_entry
;
goto
next_entry
;
}
}
...
...
include/net/ieee80211.h
View file @
0827f2b6
...
@@ -803,9 +803,9 @@ enum ieee80211_state {
...
@@ -803,9 +803,9 @@ enum ieee80211_state {
#define IEEE80211_24GHZ_MAX_CHANNEL 14
#define IEEE80211_24GHZ_MAX_CHANNEL 14
#define IEEE80211_24GHZ_CHANNELS 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_MAX_CHANNEL 165
#define IEEE80211_52GHZ_CHANNELS
32
#define IEEE80211_52GHZ_CHANNELS
131
enum
{
enum
{
IEEE80211_CH_PASSIVE_ONLY
=
(
1
<<
0
),
IEEE80211_CH_PASSIVE_ONLY
=
(
1
<<
0
),
...
...
net/ieee80211/ieee80211_rx.c
View file @
0827f2b6
...
@@ -350,6 +350,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
...
@@ -350,6 +350,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
u8
src
[
ETH_ALEN
];
u8
src
[
ETH_ALEN
];
struct
ieee80211_crypt_data
*
crypt
=
NULL
;
struct
ieee80211_crypt_data
*
crypt
=
NULL
;
int
keyidx
=
0
;
int
keyidx
=
0
;
int
can_be_decrypted
=
0
;
hdr
=
(
struct
ieee80211_hdr_4addr
*
)
skb
->
data
;
hdr
=
(
struct
ieee80211_hdr_4addr
*
)
skb
->
data
;
stats
=
&
ieee
->
stats
;
stats
=
&
ieee
->
stats
;
...
@@ -410,12 +411,23 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
...
@@ -410,12 +411,23 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
return
1
;
return
1
;
}
}
if
(
is_multicast_ether_addr
(
hdr
->
addr1
)
can_be_decrypted
=
(
is_multicast_ether_addr
(
hdr
->
addr1
)
||
?
ieee
->
host_mc_decrypt
:
ieee
->
host_decrypt
)
{
is_broadcast_ether_addr
(
hdr
->
addr2
))
?
ieee
->
host_mc_decrypt
:
ieee
->
host_decrypt
;
if
(
can_be_decrypted
)
{
int
idx
=
0
;
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
;
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
];
crypt
=
ieee
->
crypt
[
idx
];
#ifdef NOT_YET
#ifdef NOT_YET
sta
=
NULL
;
sta
=
NULL
;
...
@@ -553,7 +565,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
...
@@ -553,7 +565,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possibly fragmented, possibly encrypted) payload */
/* 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
)
(
keyidx
=
ieee80211_rx_frame_decrypt
(
ieee
,
skb
,
crypt
))
<
0
)
goto
rx_dropped
;
goto
rx_dropped
;
...
@@ -617,7 +629,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
...
@@ -617,7 +629,7 @@ int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb,
/* skb: hdr + (possible reassembled) full MSDU payload; possibly still
/* skb: hdr + (possible reassembled) full MSDU payload; possibly still
* encrypted/authenticated */
* 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
))
ieee80211_rx_frame_decrypt_msdu
(
ieee
,
skb
,
keyidx
,
crypt
))
goto
rx_dropped
;
goto
rx_dropped
;
...
@@ -1439,7 +1451,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
...
@@ -1439,7 +1451,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
break
;
break
;
case
IEEE80211_STYPE_PROBE_REQ
:
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
WLAN_FC_GET_STYPE
(
le16_to_cpu
(
header
->
frame_ctl
)));
(
header
->
frame_ctl
)));
...
@@ -1473,7 +1485,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
...
@@ -1473,7 +1485,7 @@ void ieee80211_rx_mgt(struct ieee80211_device *ieee,
break
;
break
;
case
IEEE80211_STYPE_AUTH
:
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
WLAN_FC_GET_STYPE
(
le16_to_cpu
(
header
->
frame_ctl
)));
(
header
->
frame_ctl
)));
...
...
net/ieee80211/ieee80211_wx.c
View file @
0827f2b6
...
@@ -232,15 +232,18 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
...
@@ -232,15 +232,18 @@ static char *ipw2100_translate_scan(struct ieee80211_device *ieee,
return
start
;
return
start
;
}
}
#define SCAN_ITEM_SIZE 128
int
ieee80211_wx_get_scan
(
struct
ieee80211_device
*
ieee
,
int
ieee80211_wx_get_scan
(
struct
ieee80211_device
*
ieee
,
struct
iw_request_info
*
info
,
struct
iw_request_info
*
info
,
union
iwreq_data
*
wrqu
,
char
*
extra
)
union
iwreq_data
*
wrqu
,
char
*
extra
)
{
{
struct
ieee80211_network
*
network
;
struct
ieee80211_network
*
network
;
unsigned
long
flags
;
unsigned
long
flags
;
int
err
=
0
;
char
*
ev
=
extra
;
char
*
ev
=
extra
;
char
*
stop
=
ev
+
IW_SCAN_MAX_DATA
;
char
*
stop
=
ev
+
wrqu
->
data
.
length
;
int
i
=
0
;
int
i
=
0
;
IEEE80211_DEBUG_WX
(
"Getting scan
\n
"
);
IEEE80211_DEBUG_WX
(
"Getting scan
\n
"
);
...
@@ -249,6 +252,11 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
...
@@ -249,6 +252,11 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
list_for_each_entry
(
network
,
&
ieee
->
network_list
,
list
)
{
list_for_each_entry
(
network
,
&
ieee
->
network_list
,
list
)
{
i
++
;
i
++
;
if
(
stop
-
ev
<
SCAN_ITEM_SIZE
)
{
err
=
-
E2BIG
;
break
;
}
if
(
ieee
->
scan_age
==
0
||
if
(
ieee
->
scan_age
==
0
||
time_after
(
network
->
last_scanned
+
ieee
->
scan_age
,
jiffies
))
time_after
(
network
->
last_scanned
+
ieee
->
scan_age
,
jiffies
))
ev
=
ipw2100_translate_scan
(
ieee
,
ev
,
stop
,
network
);
ev
=
ipw2100_translate_scan
(
ieee
,
ev
,
stop
,
network
);
...
@@ -270,7 +278,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
...
@@ -270,7 +278,7 @@ int ieee80211_wx_get_scan(struct ieee80211_device *ieee,
IEEE80211_DEBUG_WX
(
"exit: %d networks returned.
\n
"
,
i
);
IEEE80211_DEBUG_WX
(
"exit: %d networks returned.
\n
"
,
i
);
return
0
;
return
err
;
}
}
int
ieee80211_wx_set_encode
(
struct
ieee80211_device
*
ieee
,
int
ieee80211_wx_set_encode
(
struct
ieee80211_device
*
ieee
,
...
...
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