Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
kernel_linux
提交
d9e34325
K
kernel_linux
项目概览
OpenHarmony
/
kernel_linux
上一次同步 3 年多
通知
13
Star
8
Fork
2
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
K
kernel_linux
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
d9e34325
编写于
10月 04, 2005
作者:
J
Jeff Garzik
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'upstream-fixes'
上级
500f83ab
832f8f03
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
135 addition
and
243 deletion
+135
-243
drivers/net/Kconfig
drivers/net/Kconfig
+4
-4
drivers/net/bonding/bond_main.c
drivers/net/bonding/bond_main.c
+69
-211
drivers/net/bonding/bonding.h
drivers/net/bonding/bonding.h
+2
-2
drivers/net/ibm_emac/ibm_emac_core.c
drivers/net/ibm_emac/ibm_emac_core.c
+31
-0
drivers/net/ns83820.c
drivers/net/ns83820.c
+1
-1
drivers/net/starfire.c
drivers/net/starfire.c
+24
-22
drivers/net/sungem.h
drivers/net/sungem.h
+2
-1
drivers/net/tulip/21142.c
drivers/net/tulip/21142.c
+1
-1
net/ieee80211/ieee80211_tx.c
net/ieee80211/ieee80211_tx.c
+1
-1
未找到文件。
drivers/net/Kconfig
浏览文件 @
d9e34325
...
...
@@ -1655,7 +1655,7 @@ config LAN_SAA9730
config NET_POCKET
bool "Pocket and portable adapters"
depends on NET_ETHERNET &&
ISA
depends on NET_ETHERNET &&
PARPORT
---help---
Cute little network (Ethernet) devices which attach to the parallel
port ("pocket adapters"), commonly used with laptops. If you have
...
...
@@ -1679,7 +1679,7 @@ config NET_POCKET
config ATP
tristate "AT-LAN-TEC/RealTek pocket adapter support"
depends on NET_POCKET &&
ISA
&& X86
depends on NET_POCKET &&
PARPORT
&& X86
select CRC32
---help---
This is a network (Ethernet) device which attaches to your parallel
...
...
@@ -1694,7 +1694,7 @@ config ATP
config DE600
tristate "D-Link DE600 pocket adapter support"
depends on NET_POCKET &&
ISA
depends on NET_POCKET &&
PARPORT
---help---
This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the
...
...
@@ -1709,7 +1709,7 @@ config DE600
config DE620
tristate "D-Link DE620 pocket adapter support"
depends on NET_POCKET &&
ISA
depends on NET_POCKET &&
PARPORT
---help---
This is a network (Ethernet) device which attaches to your parallel
port. Read <file:Documentation/networking/DLINK.txt> as well as the
...
...
drivers/net/bonding/bond_main.c
浏览文件 @
d9e34325
...
...
@@ -487,6 +487,8 @@
* * Added xmit_hash_policy_layer34()
* - Modified by Jay Vosburgh <fubar@us.ibm.com> to also support mode 4.
* Set version to 2.6.3.
* 2005/09/26 - Jay Vosburgh <fubar@us.ibm.com>
* - Removed backwards compatibility for old ifenslaves. Version 2.6.4.
*/
//#define BONDING_DEBUG 1
...
...
@@ -595,14 +597,7 @@ static int arp_ip_count = 0;
static
int
bond_mode
=
BOND_MODE_ROUNDROBIN
;
static
int
xmit_hashtype
=
BOND_XMIT_POLICY_LAYER2
;
static
int
lacp_fast
=
0
;
static
int
app_abi_ver
=
0
;
static
int
orig_app_abi_ver
=
-
1
;
/* This is used to save the first ABI version
* we receive from the application. Once set,
* it won't be changed, and the module will
* refuse to enslave/release interfaces if the
* command comes from an application using
* another ABI version.
*/
struct
bond_parm_tbl
{
char
*
modename
;
int
mode
;
...
...
@@ -1702,51 +1697,29 @@ static int bond_enslave(struct net_device *bond_dev, struct net_device *slave_de
}
}
if
(
app_abi_ver
>=
1
)
{
/* The application is using an ABI, which requires the
* slave interface to be closed.
*/
if
((
slave_dev
->
flags
&
IFF_UP
))
{
printk
(
KERN_ERR
DRV_NAME
": Error: %s is up
\n
"
,
slave_dev
->
name
);
res
=
-
EPERM
;
goto
err_undo_flags
;
}
if
(
slave_dev
->
set_mac_address
==
NULL
)
{
printk
(
KERN_ERR
DRV_NAME
": Error: The slave device you specified does "
"not support setting the MAC address.
\n
"
);
printk
(
KERN_ERR
"Your kernel likely does not support slave "
"devices.
\n
"
);
/*
* Old ifenslave binaries are no longer supported. These can
* be identified with moderate accurary by the state of the slave:
* the current ifenslave will set the interface down prior to
* enslaving it; the old ifenslave will not.
*/
if
((
slave_dev
->
flags
&
IFF_UP
))
{
printk
(
KERN_ERR
DRV_NAME
": %s is up. "
"This may be due to an out of date ifenslave.
\n
"
,
slave_dev
->
name
);
res
=
-
EPERM
;
goto
err_undo_flags
;
}
res
=
-
EOPNOTSUPP
;
goto
err_undo_flags
;
}
}
else
{
/* The application is not using an ABI, which requires the
* slave interface to be open.
*/
if
(
!
(
slave_dev
->
flags
&
IFF_UP
))
{
printk
(
KERN_ERR
DRV_NAME
": Error: %s is not running
\n
"
,
slave_dev
->
name
);
res
=
-
EINVAL
;
goto
err_undo_flags
;
}
if
(
slave_dev
->
set_mac_address
==
NULL
)
{
printk
(
KERN_ERR
DRV_NAME
": Error: The slave device you specified does "
"not support setting the MAC address.
\n
"
);
printk
(
KERN_ERR
"Your kernel likely does not support slave devices.
\n
"
);
if
((
bond
->
params
.
mode
==
BOND_MODE_8023AD
)
||
(
bond
->
params
.
mode
==
BOND_MODE_TLB
)
||
(
bond
->
params
.
mode
==
BOND_MODE_ALB
))
{
printk
(
KERN_ERR
DRV_NAME
": Error: to use %s mode, you must upgrade "
"ifenslave.
\n
"
,
bond_mode_name
(
bond
->
params
.
mode
));
res
=
-
EOPNOTSUPP
;
goto
err_undo_flags
;
}
res
=
-
EOPNOTSUPP
;
goto
err_undo_flags
;
}
new_slave
=
kmalloc
(
sizeof
(
struct
slave
),
GFP_KERNEL
);
...
...
@@ -1762,41 +1735,36 @@ static int bond_enslave(struct net_device *bond_dev, struct net_device *slave_de
*/
new_slave
->
original_flags
=
slave_dev
->
flags
;
if
(
app_abi_ver
>=
1
)
{
/* save slave's original ("permanent") mac address for
* modes that needs it, and for restoring it upon release,
* and then
set it to the master's address
*/
memcpy
(
new_slave
->
perm_hwaddr
,
slave_dev
->
dev_addr
,
ETH_ALEN
);
/*
* Save slave's original ("permanent") mac address for modes
* that need it, and for restoring it upon release, and then
*
set it to the master's address
*/
memcpy
(
new_slave
->
perm_hwaddr
,
slave_dev
->
dev_addr
,
ETH_ALEN
);
/* set slave to master's mac address
* The application already set the master's
*
mac address to that of the first slave
*/
memcpy
(
addr
.
sa_data
,
bond_dev
->
dev_addr
,
bond_dev
->
addr_len
);
addr
.
sa_family
=
slave_dev
->
type
;
res
=
dev_set_mac_address
(
slave_dev
,
&
addr
);
if
(
res
)
{
dprintk
(
"Error %d calling set_mac_address
\n
"
,
res
);
goto
err_free
;
}
/*
* Set slave to master's mac address. The application already
* set the master's
mac address to that of the first slave
*/
memcpy
(
addr
.
sa_data
,
bond_dev
->
dev_addr
,
bond_dev
->
addr_len
);
addr
.
sa_family
=
slave_dev
->
type
;
res
=
dev_set_mac_address
(
slave_dev
,
&
addr
);
if
(
res
)
{
dprintk
(
"Error %d calling set_mac_address
\n
"
,
res
);
goto
err_free
;
}
/* open the slave since the application closed it */
res
=
dev_open
(
slave_dev
);
if
(
res
)
{
dprintk
(
"Openning slave %s failed
\n
"
,
slave_dev
->
name
);
goto
err_restore_mac
;
}
/* open the slave since the application closed it */
res
=
dev_open
(
slave_dev
);
if
(
res
)
{
dprintk
(
"Openning slave %s failed
\n
"
,
slave_dev
->
name
);
goto
err_restore_mac
;
}
res
=
netdev_set_master
(
slave_dev
,
bond_dev
);
if
(
res
)
{
dprintk
(
"Error %d calling netdev_set_master
\n
"
,
res
);
if
(
app_abi_ver
<
1
)
{
goto
err_free
;
}
else
{
goto
err_close
;
}
goto
err_close
;
}
new_slave
->
dev
=
slave_dev
;
...
...
@@ -1997,39 +1965,6 @@ static int bond_enslave(struct net_device *bond_dev, struct net_device *slave_de
write_unlock_bh
(
&
bond
->
lock
);
if
(
app_abi_ver
<
1
)
{
/*
* !!! This is to support old versions of ifenslave.
* We can remove this in 2.5 because our ifenslave takes
* care of this for us.
* We check to see if the master has a mac address yet.
* If not, we'll give it the mac address of our slave device.
*/
int
ndx
=
0
;
for
(
ndx
=
0
;
ndx
<
bond_dev
->
addr_len
;
ndx
++
)
{
dprintk
(
"Checking ndx=%d of bond_dev->dev_addr
\n
"
,
ndx
);
if
(
bond_dev
->
dev_addr
[
ndx
]
!=
0
)
{
dprintk
(
"Found non-zero byte at ndx=%d
\n
"
,
ndx
);
break
;
}
}
if
(
ndx
==
bond_dev
->
addr_len
)
{
/*
* We got all the way through the address and it was
* all 0's.
*/
dprintk
(
"%s doesn't have a MAC address yet.
\n
"
,
bond_dev
->
name
);
dprintk
(
"Going to give assign it from %s.
\n
"
,
slave_dev
->
name
);
bond_sethwaddr
(
bond_dev
,
slave_dev
);
}
}
printk
(
KERN_INFO
DRV_NAME
": %s: enslaving %s as a%s interface with a%s link.
\n
"
,
bond_dev
->
name
,
slave_dev
->
name
,
...
...
@@ -2227,12 +2162,10 @@ static int bond_release(struct net_device *bond_dev, struct net_device *slave_de
/* close slave before restoring its mac address */
dev_close
(
slave_dev
);
if
(
app_abi_ver
>=
1
)
{
/* restore original ("permanent") mac address */
memcpy
(
addr
.
sa_data
,
slave
->
perm_hwaddr
,
ETH_ALEN
);
addr
.
sa_family
=
slave_dev
->
type
;
dev_set_mac_address
(
slave_dev
,
&
addr
);
}
/* restore original ("permanent") mac address */
memcpy
(
addr
.
sa_data
,
slave
->
perm_hwaddr
,
ETH_ALEN
);
addr
.
sa_family
=
slave_dev
->
type
;
dev_set_mac_address
(
slave_dev
,
&
addr
);
/* restore the original state of the
* IFF_NOARP flag that might have been
...
...
@@ -2320,12 +2253,10 @@ static int bond_release_all(struct net_device *bond_dev)
/* close slave before restoring its mac address */
dev_close
(
slave_dev
);
if
(
app_abi_ver
>=
1
)
{
/* restore original ("permanent") mac address*/
memcpy
(
addr
.
sa_data
,
slave
->
perm_hwaddr
,
ETH_ALEN
);
addr
.
sa_family
=
slave_dev
->
type
;
dev_set_mac_address
(
slave_dev
,
&
addr
);
}
/* restore original ("permanent") mac address*/
memcpy
(
addr
.
sa_data
,
slave
->
perm_hwaddr
,
ETH_ALEN
);
addr
.
sa_family
=
slave_dev
->
type
;
dev_set_mac_address
(
slave_dev
,
&
addr
);
/* restore the original state of the IFF_NOARP flag that might have
* been set by bond_set_slave_inactive_flags()
...
...
@@ -2423,57 +2354,6 @@ static int bond_ioctl_change_active(struct net_device *bond_dev, struct net_devi
return
res
;
}
static
int
bond_ethtool_ioctl
(
struct
net_device
*
bond_dev
,
struct
ifreq
*
ifr
)
{
struct
ethtool_drvinfo
info
;
void
__user
*
addr
=
ifr
->
ifr_data
;
uint32_t
cmd
;
if
(
get_user
(
cmd
,
(
uint32_t
__user
*
)
addr
))
{
return
-
EFAULT
;
}
switch
(
cmd
)
{
case
ETHTOOL_GDRVINFO
:
if
(
copy_from_user
(
&
info
,
addr
,
sizeof
(
info
)))
{
return
-
EFAULT
;
}
if
(
strcmp
(
info
.
driver
,
"ifenslave"
)
==
0
)
{
int
new_abi_ver
;
char
*
endptr
;
new_abi_ver
=
simple_strtoul
(
info
.
fw_version
,
&
endptr
,
0
);
if
(
*
endptr
)
{
printk
(
KERN_ERR
DRV_NAME
": Error: got invalid ABI "
"version from application
\n
"
);
return
-
EINVAL
;
}
if
(
orig_app_abi_ver
==
-
1
)
{
orig_app_abi_ver
=
new_abi_ver
;
}
app_abi_ver
=
new_abi_ver
;
}
strncpy
(
info
.
driver
,
DRV_NAME
,
32
);
strncpy
(
info
.
version
,
DRV_VERSION
,
32
);
snprintf
(
info
.
fw_version
,
32
,
"%d"
,
BOND_ABI_VERSION
);
if
(
copy_to_user
(
addr
,
&
info
,
sizeof
(
info
)))
{
return
-
EFAULT
;
}
return
0
;
default:
return
-
EOPNOTSUPP
;
}
}
static
int
bond_info_query
(
struct
net_device
*
bond_dev
,
struct
ifbond
*
info
)
{
struct
bonding
*
bond
=
bond_dev
->
priv
;
...
...
@@ -3442,16 +3322,11 @@ static void bond_info_show_slave(struct seq_file *seq, const struct slave *slave
seq_printf
(
seq
,
"Link Failure Count: %d
\n
"
,
slave
->
link_failure_count
);
if
(
app_abi_ver
>=
1
)
{
seq_printf
(
seq
,
"Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x
\n
"
,
slave
->
perm_hwaddr
[
0
],
slave
->
perm_hwaddr
[
1
],
slave
->
perm_hwaddr
[
2
],
slave
->
perm_hwaddr
[
3
],
slave
->
perm_hwaddr
[
4
],
slave
->
perm_hwaddr
[
5
]);
}
seq_printf
(
seq
,
"Permanent HW addr: %02x:%02x:%02x:%02x:%02x:%02x
\n
"
,
slave
->
perm_hwaddr
[
0
],
slave
->
perm_hwaddr
[
1
],
slave
->
perm_hwaddr
[
2
],
slave
->
perm_hwaddr
[
3
],
slave
->
perm_hwaddr
[
4
],
slave
->
perm_hwaddr
[
5
]);
if
(
bond
->
params
.
mode
==
BOND_MODE_8023AD
)
{
const
struct
aggregator
*
agg
...
...
@@ -4010,15 +3885,12 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
struct
ifslave
k_sinfo
;
struct
ifslave
__user
*
u_sinfo
=
NULL
;
struct
mii_ioctl_data
*
mii
=
NULL
;
int
prev_abi_ver
=
orig_app_abi_ver
;
int
res
=
0
;
dprintk
(
"bond_ioctl: master=%s, cmd=%d
\n
"
,
bond_dev
->
name
,
cmd
);
switch
(
cmd
)
{
case
SIOCETHTOOL
:
return
bond_ethtool_ioctl
(
bond_dev
,
ifr
);
case
SIOCGMIIPHY
:
mii
=
if_mii
(
ifr
);
if
(
!
mii
)
{
...
...
@@ -4090,21 +3962,6 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
return
-
EPERM
;
}
if
(
orig_app_abi_ver
==
-
1
)
{
/* no orig_app_abi_ver was provided yet, so we'll use the
* current one from now on, even if it's 0
*/
orig_app_abi_ver
=
app_abi_ver
;
}
else
if
(
orig_app_abi_ver
!=
app_abi_ver
)
{
printk
(
KERN_ERR
DRV_NAME
": Error: already using ifenslave ABI version %d; to "
"upgrade ifenslave to version %d, you must first "
"reload bonding.
\n
"
,
orig_app_abi_ver
,
app_abi_ver
);
return
-
EINVAL
;
}
slave_dev
=
dev_get_by_name
(
ifr
->
ifr_slave
);
dprintk
(
"slave_dev=%p:
\n
"
,
slave_dev
);
...
...
@@ -4137,14 +3994,6 @@ static int bond_do_ioctl(struct net_device *bond_dev, struct ifreq *ifr, int cmd
dev_put
(
slave_dev
);
}
if
(
res
<
0
)
{
/* The ioctl failed, so there's no point in changing the
* orig_app_abi_ver. We'll restore it's value just in case
* we've changed it earlier in this function.
*/
orig_app_abi_ver
=
prev_abi_ver
;
}
return
res
;
}
...
...
@@ -4578,9 +4427,18 @@ static inline void bond_set_mode_ops(struct bonding *bond, int mode)
}
}
static
void
bond_ethtool_get_drvinfo
(
struct
net_device
*
bond_dev
,
struct
ethtool_drvinfo
*
drvinfo
)
{
strncpy
(
drvinfo
->
driver
,
DRV_NAME
,
32
);
strncpy
(
drvinfo
->
version
,
DRV_VERSION
,
32
);
snprintf
(
drvinfo
->
fw_version
,
32
,
"%d"
,
BOND_ABI_VERSION
);
}
static
struct
ethtool_ops
bond_ethtool_ops
=
{
.
get_tx_csum
=
ethtool_op_get_tx_csum
,
.
get_sg
=
ethtool_op_get_sg
,
.
get_drvinfo
=
bond_ethtool_get_drvinfo
,
};
/*
...
...
drivers/net/bonding/bonding.h
浏览文件 @
d9e34325
...
...
@@ -40,8 +40,8 @@
#include "bond_3ad.h"
#include "bond_alb.h"
#define DRV_VERSION "2.6.
3
"
#define DRV_RELDATE "
June 8
, 2005"
#define DRV_VERSION "2.6.
4
"
#define DRV_RELDATE "
September 26
, 2005"
#define DRV_NAME "bonding"
#define DRV_DESCRIPTION "Ethernet Channel Bonding Driver"
...
...
drivers/net/ibm_emac/ibm_emac_core.c
浏览文件 @
d9e34325
...
...
@@ -1875,6 +1875,9 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal)
rc
=
-
ENODEV
;
goto
bail
;
}
/* Disable any PHY features not supported by the platform */
ep
->
phy_mii
.
def
->
features
&=
~
emacdata
->
phy_feat_exc
;
/* Setup initial PHY config & startup aneg */
if
(
ep
->
phy_mii
.
def
->
ops
->
init
)
...
...
@@ -1882,6 +1885,34 @@ static int emac_init_device(struct ocp_device *ocpdev, struct ibm_ocp_mal *mal)
netif_carrier_off
(
ndev
);
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_Autoneg
)
ep
->
want_autoneg
=
1
;
else
{
ep
->
want_autoneg
=
0
;
/* Select highest supported speed/duplex */
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_1000baseT_Full
)
{
ep
->
phy_mii
.
speed
=
SPEED_1000
;
ep
->
phy_mii
.
duplex
=
DUPLEX_FULL
;
}
else
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_1000baseT_Half
)
{
ep
->
phy_mii
.
speed
=
SPEED_1000
;
ep
->
phy_mii
.
duplex
=
DUPLEX_HALF
;
}
else
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_100baseT_Full
)
{
ep
->
phy_mii
.
speed
=
SPEED_100
;
ep
->
phy_mii
.
duplex
=
DUPLEX_FULL
;
}
else
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_100baseT_Half
)
{
ep
->
phy_mii
.
speed
=
SPEED_100
;
ep
->
phy_mii
.
duplex
=
DUPLEX_HALF
;
}
else
if
(
ep
->
phy_mii
.
def
->
features
&
SUPPORTED_10baseT_Full
)
{
ep
->
phy_mii
.
speed
=
SPEED_10
;
ep
->
phy_mii
.
duplex
=
DUPLEX_FULL
;
}
else
{
ep
->
phy_mii
.
speed
=
SPEED_10
;
ep
->
phy_mii
.
duplex
=
DUPLEX_HALF
;
}
}
emac_start_link
(
ep
,
NULL
);
/* read the MAC Address */
...
...
drivers/net/ns83820.c
浏览文件 @
d9e34325
...
...
@@ -584,7 +584,7 @@ static inline int ns83820_add_rx_skb(struct ns83820 *dev, struct sk_buff *skb)
return
0
;
}
static
inline
int
rx_refill
(
struct
net_device
*
ndev
,
unsigned
int
gfp
)
static
inline
int
rx_refill
(
struct
net_device
*
ndev
,
unsigned
int
__nocast
gfp
)
{
struct
ns83820
*
dev
=
PRIV
(
ndev
);
unsigned
i
;
...
...
drivers/net/starfire.c
浏览文件 @
d9e34325
...
...
@@ -133,14 +133,18 @@
- finally added firmware (GPL'ed by Adaptec)
- removed compatibility code for 2.2.x
LK1.4.2.1 (Ion Badulescu)
- fixed 32/64 bit issues on i386 + CONFIG_HIGHMEM
- added 32-bit padding to outgoing skb's, removed previous workaround
TODO: - fix forced speed/duplexing code (broken a long time ago, when
somebody converted the driver to use the generic MII code)
- fix VLAN support
*/
#define DRV_NAME "starfire"
#define DRV_VERSION "1.03+LK1.4.2"
#define DRV_RELDATE "
January 19
, 2005"
#define DRV_VERSION "1.03+LK1.4.2
.1
"
#define DRV_RELDATE "
October 3
, 2005"
#include <linux/config.h>
#include <linux/version.h>
...
...
@@ -165,6 +169,14 @@ TODO: - fix forced speed/duplexing code (broken a long time ago, when
* of length 1. If and when this is fixed, the #define below can be removed.
*/
#define HAS_BROKEN_FIRMWARE
/*
* If using the broken firmware, data must be padded to the next 32-bit boundary.
*/
#ifdef HAS_BROKEN_FIRMWARE
#define PADDING_MASK 3
#endif
/*
* Define this if using the driver with the zero-copy patch
*/
...
...
@@ -257,9 +269,10 @@ static int full_duplex[MAX_UNITS] = {0, };
* This SUCKS.
* We need a much better method to determine if dma_addr_t is 64-bit.
*/
#if (defined(__i386__) && defined(CONFIG_HIGHMEM
) && (LINUX_VERSION_CODE > 0x20500 || defined(CONFIG_HIGHMEM64G)
)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
#if (defined(__i386__) && defined(CONFIG_HIGHMEM
64G
)) || defined(__x86_64__) || defined (__ia64__) || defined(__mips64__) || (defined(__mips__) && defined(CONFIG_HIGHMEM) && defined(CONFIG_64BIT_PHYS_ADDR))
/* 64-bit dma_addr_t */
#define ADDR_64BITS
/* This chip uses 64 bit addresses. */
#define netdrv_addr_t u64
#define cpu_to_dma(x) cpu_to_le64(x)
#define dma_to_cpu(x) le64_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr64bit
...
...
@@ -268,6 +281,7 @@ static int full_duplex[MAX_UNITS] = {0, };
#define TX_COMPL_Q_ADDR_SIZE TxComplQAddr64bit
#define RX_DESC_ADDR_SIZE RxDescAddr64bit
#else
/* 32-bit dma_addr_t */
#define netdrv_addr_t u32
#define cpu_to_dma(x) cpu_to_le32(x)
#define dma_to_cpu(x) le32_to_cpu(x)
#define RX_DESC_Q_ADDR_SIZE RxDescQAddr32bit
...
...
@@ -1333,21 +1347,10 @@ static int start_tx(struct sk_buff *skb, struct net_device *dev)
}
#if defined(ZEROCOPY) && defined(HAS_BROKEN_FIRMWARE)
{
int
has_bad_length
=
0
;
if
(
skb_first_frag_len
(
skb
)
==
1
)
has_bad_length
=
1
;
else
{
for
(
i
=
0
;
i
<
skb_shinfo
(
skb
)
->
nr_frags
;
i
++
)
if
(
skb_shinfo
(
skb
)
->
frags
[
i
].
size
==
1
)
{
has_bad_length
=
1
;
break
;
}
}
if
(
has_bad_length
)
skb_checksum_help
(
skb
,
0
);
if
(
skb
->
ip_summed
==
CHECKSUM_HW
)
{
skb
=
skb_padto
(
skb
,
(
skb
->
len
+
PADDING_MASK
)
&
~
PADDING_MASK
);
if
(
skb
==
NULL
)
return
NETDEV_TX_OK
;
}
#endif
/* ZEROCOPY && HAS_BROKEN_FIRMWARE */
...
...
@@ -2127,13 +2130,12 @@ static int __init starfire_init (void)
#endif
#endif
#ifndef ADDR_64BITS
/* we can do this test only at run-time... sigh */
if
(
sizeof
(
dma_addr_t
)
==
sizeof
(
u64
))
{
printk
(
"This driver has
not been ported to this 64-bit architecture yet
\n
"
);
if
(
sizeof
(
dma_addr_t
)
!=
sizeof
(
netdrv_addr_t
))
{
printk
(
"This driver has
dma_addr_t issues, please send email to maintainer
\n
"
);
return
-
ENODEV
;
}
#endif
/* not ADDR_64BITS */
return
pci_module_init
(
&
starfire_driver
);
}
...
...
drivers/net/sungem.h
浏览文件 @
d9e34325
...
...
@@ -1035,7 +1035,8 @@ struct gem {
#define ALIGNED_RX_SKB_ADDR(addr) \
((((unsigned long)(addr) + (64UL - 1UL)) & ~(64UL - 1UL)) - (unsigned long)(addr))
static
__inline__
struct
sk_buff
*
gem_alloc_skb
(
int
size
,
int
gfp_flags
)
static
__inline__
struct
sk_buff
*
gem_alloc_skb
(
int
size
,
unsigned
int
__nocast
gfp_flags
)
{
struct
sk_buff
*
skb
=
alloc_skb
(
size
+
64
,
gfp_flags
);
...
...
drivers/net/tulip/21142.c
浏览文件 @
d9e34325
...
...
@@ -172,7 +172,7 @@ void t21142_lnk_change(struct net_device *dev, int csr5)
int
i
;
for
(
i
=
0
;
i
<
tp
->
mtable
->
leafcount
;
i
++
)
if
(
tp
->
mtable
->
mleaf
[
i
].
media
==
dev
->
if_port
)
{
int
startup
=
!
((
tp
->
chip_id
==
DC21143
&&
tp
->
revision
==
65
));
int
startup
=
!
((
tp
->
chip_id
==
DC21143
&&
(
tp
->
revision
==
48
||
tp
->
revision
==
65
)
));
tp
->
cur_index
=
i
;
tulip_select_media
(
dev
,
startup
);
setup_done
=
1
;
...
...
net/ieee80211/ieee80211_tx.c
浏览文件 @
d9e34325
...
...
@@ -187,7 +187,7 @@ void ieee80211_txb_free(struct ieee80211_txb *txb)
}
static
struct
ieee80211_txb
*
ieee80211_alloc_txb
(
int
nr_frags
,
int
txb_size
,
unsigned
int
gfp_mask
)
unsigned
int
__nocast
gfp_mask
)
{
struct
ieee80211_txb
*
txb
;
int
i
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录