Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
27707477
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看板
提交
27707477
编写于
3月 19, 2012
作者:
D
David S. Miller
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'gianfar-bql' of
git://git.kernel.org/pub/scm/linux/kernel/git/paulg/linux
上级
4da0bd73
5407b14c
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
17 addition
and
10 deletion
+17
-10
drivers/net/ethernet/freescale/gianfar.c
drivers/net/ethernet/freescale/gianfar.c
+16
-6
drivers/net/ethernet/freescale/gianfar.h
drivers/net/ethernet/freescale/gianfar.h
+0
-3
drivers/net/ethernet/freescale/gianfar_ethtool.c
drivers/net/ethernet/freescale/gianfar_ethtool.c
+1
-1
未找到文件。
drivers/net/ethernet/freescale/gianfar.c
浏览文件 @
27707477
...
...
@@ -104,10 +104,7 @@
#include "fsl_pq_mdio.h"
#define TX_TIMEOUT (1*HZ)
#undef BRIEF_GFAR_ERRORS
#undef VERBOSE_GFAR_ERRORS
const
char
gfar_driver_name
[]
=
"Gianfar Ethernet"
;
const
char
gfar_driver_version
[]
=
"1.3"
;
static
int
gfar_enet_open
(
struct
net_device
*
dev
);
...
...
@@ -1755,9 +1752,12 @@ static void free_skb_resources(struct gfar_private *priv)
/* Go through all the buffer descriptors and free their data buffers */
for
(
i
=
0
;
i
<
priv
->
num_tx_queues
;
i
++
)
{
struct
netdev_queue
*
txq
;
tx_queue
=
priv
->
tx_queue
[
i
];
txq
=
netdev_get_tx_queue
(
tx_queue
->
dev
,
tx_queue
->
qindex
);
if
(
tx_queue
->
tx_skbuff
)
free_skb_tx_queue
(
tx_queue
);
netdev_tx_reset_queue
(
txq
);
}
for
(
i
=
0
;
i
<
priv
->
num_rx_queues
;
i
++
)
{
...
...
@@ -2217,6 +2217,8 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev)
lstatus
|=
BD_LFLAG
(
TXBD_CRC
|
TXBD_READY
)
|
skb_headlen
(
skb
);
}
netdev_tx_sent_queue
(
txq
,
skb
->
len
);
/*
* We can work in parallel with gfar_clean_tx_ring(), except
* when modifying num_txbdfree. Note that we didn't grab the lock
...
...
@@ -2460,6 +2462,7 @@ static void gfar_align_skb(struct sk_buff *skb)
static
int
gfar_clean_tx_ring
(
struct
gfar_priv_tx_q
*
tx_queue
)
{
struct
net_device
*
dev
=
tx_queue
->
dev
;
struct
netdev_queue
*
txq
;
struct
gfar_private
*
priv
=
netdev_priv
(
dev
);
struct
gfar_priv_rx_q
*
rx_queue
=
NULL
;
struct
txbd8
*
bdp
,
*
next
=
NULL
;
...
...
@@ -2471,10 +2474,13 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
int
frags
=
0
,
nr_txbds
=
0
;
int
i
;
int
howmany
=
0
;
int
tqi
=
tx_queue
->
qindex
;
unsigned
int
bytes_sent
=
0
;
u32
lstatus
;
size_t
buflen
;
rx_queue
=
priv
->
rx_queue
[
tx_queue
->
qindex
];
rx_queue
=
priv
->
rx_queue
[
tqi
];
txq
=
netdev_get_tx_queue
(
dev
,
tqi
);
bdp
=
tx_queue
->
dirty_tx
;
skb_dirtytx
=
tx_queue
->
skb_dirtytx
;
...
...
@@ -2533,6 +2539,8 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
bdp
=
next_txbd
(
bdp
,
base
,
tx_ring_size
);
}
bytes_sent
+=
skb
->
len
;
/*
* If there's room in the queue (limit it to rx_buffer_size)
* we add this skb back into the pool, if it's the right size
...
...
@@ -2557,13 +2565,15 @@ static int gfar_clean_tx_ring(struct gfar_priv_tx_q *tx_queue)
}
/* If we freed a buffer, we can restart transmission, if necessary */
if
(
__netif_subqueue_stopped
(
dev
,
tx_queue
->
qindex
)
&&
tx_queue
->
num_txbdfree
)
netif_wake_subqueue
(
dev
,
t
x_queue
->
qindex
);
if
(
netif_tx_queue_stopped
(
txq
)
&&
tx_queue
->
num_txbdfree
)
netif_wake_subqueue
(
dev
,
t
qi
);
/* Update dirty indicators */
tx_queue
->
skb_dirtytx
=
skb_dirtytx
;
tx_queue
->
dirty_tx
=
bdp
;
netdev_tx_completed_queue
(
txq
,
howmany
,
bytes_sent
);
return
howmany
;
}
...
...
drivers/net/ethernet/freescale/gianfar.h
浏览文件 @
27707477
...
...
@@ -78,11 +78,8 @@ struct ethtool_rx_list {
#define INCREMENTAL_BUFFER_SIZE 512
#define PHY_INIT_TIMEOUT 100000
#define GFAR_PHY_CHANGE_TIME 2
#define DEVICE_NAME "%s: Gianfar Ethernet Controller Version 1.2, "
#define DRV_NAME "gfar-enet"
extern
const
char
gfar_driver_name
[];
extern
const
char
gfar_driver_version
[];
/* MAXIMUM NUMBER OF QUEUES SUPPORTED */
...
...
drivers/net/ethernet/freescale/gianfar_ethtool.c
浏览文件 @
27707477
...
...
@@ -58,7 +58,7 @@ static void gfar_gringparam(struct net_device *dev, struct ethtool_ringparam *rv
static
int
gfar_sringparam
(
struct
net_device
*
dev
,
struct
ethtool_ringparam
*
rvals
);
static
void
gfar_gdrvinfo
(
struct
net_device
*
dev
,
struct
ethtool_drvinfo
*
drvinfo
);
static
char
stat_gstrings
[][
ETH_GSTRING_LEN
]
=
{
static
c
onst
c
har
stat_gstrings
[][
ETH_GSTRING_LEN
]
=
{
"rx-dropped-by-kernel"
,
"rx-large-frame-errors"
,
"rx-short-frame-errors"
,
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录