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
nexedi
linux
Commits
356bd146
Commit
356bd146
authored
Dec 11, 2006
by
Francois Romieu
Committed by
Jeff Garzik
Feb 05, 2007
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chelsio: spaces, tabs and friends
Signed-off-by:
Francois Romieu
<
romieu@fr.zoreil.com
>
parent
b7d58394
Changes
15
Hide whitespace changes
Inline
Side-by-side
Showing
15 changed files
with
288 additions
and
288 deletions
+288
-288
drivers/net/chelsio/common.h
drivers/net/chelsio/common.h
+1
-1
drivers/net/chelsio/cpl5_cmd.h
drivers/net/chelsio/cpl5_cmd.h
+9
-9
drivers/net/chelsio/cxgb2.c
drivers/net/chelsio/cxgb2.c
+32
-32
drivers/net/chelsio/elmer0.h
drivers/net/chelsio/elmer0.h
+20
-20
drivers/net/chelsio/espi.c
drivers/net/chelsio/espi.c
+20
-21
drivers/net/chelsio/fpga_defs.h
drivers/net/chelsio/fpga_defs.h
+3
-3
drivers/net/chelsio/gmac.h
drivers/net/chelsio/gmac.h
+9
-2
drivers/net/chelsio/ixf1010.c
drivers/net/chelsio/ixf1010.c
+2
-2
drivers/net/chelsio/mv88e1xxx.c
drivers/net/chelsio/mv88e1xxx.c
+7
-10
drivers/net/chelsio/pm3393.c
drivers/net/chelsio/pm3393.c
+4
-4
drivers/net/chelsio/sge.c
drivers/net/chelsio/sge.c
+64
-61
drivers/net/chelsio/subr.c
drivers/net/chelsio/subr.c
+41
-42
drivers/net/chelsio/tp.c
drivers/net/chelsio/tp.c
+30
-32
drivers/net/chelsio/vsc7326.c
drivers/net/chelsio/vsc7326.c
+28
-29
drivers/net/chelsio/vsc8244.c
drivers/net/chelsio/vsc8244.c
+18
-20
No files found.
drivers/net/chelsio/common.h
View file @
356bd146
...
...
@@ -324,7 +324,7 @@ struct board_info {
unsigned
char
mdio_phybaseaddr
;
struct
gmac
*
gmac
;
struct
gphy
*
gphy
;
struct
mdio_ops
*
mdio_ops
;
struct
mdio_ops
*
mdio_ops
;
const
char
*
desc
;
};
...
...
drivers/net/chelsio/cpl5_cmd.h
View file @
356bd146
...
...
@@ -103,7 +103,7 @@ enum CPL_opcode {
CPL_MIGRATE_C2T_RPL
=
0xDD
,
CPL_ERROR
=
0xD7
,
/* internal: driver -> TOM */
/* internal: driver -> TOM */
CPL_MSS_CHANGE
=
0xE1
};
...
...
@@ -159,8 +159,8 @@ enum { // TX_PKT_LSO ethernet types
};
union
opcode_tid
{
u32
opcode_tid
;
u8
opcode
;
u32
opcode_tid
;
u8
opcode
;
};
#define S_OPCODE 24
...
...
@@ -234,7 +234,7 @@ struct cpl_pass_accept_req {
u32
local_ip
;
u32
peer_ip
;
u32
tos_tid
;
struct
tcp_options
tcp_options
;
struct
tcp_options
tcp_options
;
u8
dst_mac
[
6
];
u16
vlan_tag
;
u8
src_mac
[
6
];
...
...
@@ -250,12 +250,12 @@ struct cpl_pass_accept_rpl {
u32
peer_ip
;
u32
opt0h
;
union
{
u32
opt0l
;
struct
{
u8
rsvd
[
3
];
u8
status
;
u32
opt0l
;
struct
{
u8
rsvd
[
3
];
u8
status
;
};
};
};
};
struct
cpl_act_open_req
{
...
...
drivers/net/chelsio/cxgb2.c
View file @
356bd146
...
...
@@ -69,14 +69,14 @@ static inline void cancel_mac_stats_update(struct adapter *ap)
cancel_delayed_work
(
&
ap
->
stats_update_task
);
}
#define MAX_CMDQ_ENTRIES
16384
#define MAX_CMDQ1_ENTRIES
1024
#define MAX_RX_BUFFERS
16384
#define MAX_RX_JUMBO_BUFFERS
16384
#define MAX_CMDQ_ENTRIES
16384
#define MAX_CMDQ1_ENTRIES
1024
#define MAX_RX_BUFFERS
16384
#define MAX_RX_JUMBO_BUFFERS
16384
#define MAX_TX_BUFFERS_HIGH 16384U
#define MAX_TX_BUFFERS_LOW 1536U
#define MAX_TX_BUFFERS 1460U
#define MIN_FL_ENTRIES
32
#define MIN_FL_ENTRIES
32
#define DFLT_MSG_ENABLE (NETIF_MSG_DRV | NETIF_MSG_PROBE | NETIF_MSG_LINK | \
NETIF_MSG_TIMER | NETIF_MSG_IFDOWN | NETIF_MSG_IFUP |\
...
...
@@ -143,7 +143,7 @@ static void link_report(struct port_info *p)
case
SPEED_100
:
s
=
"100Mbps"
;
break
;
}
printk
(
KERN_INFO
"%s: link up, %s, %s-duplex
\n
"
,
printk
(
KERN_INFO
"%s: link up, %s, %s-duplex
\n
"
,
p
->
dev
->
name
,
s
,
p
->
link_config
.
duplex
==
DUPLEX_FULL
?
"full"
:
"half"
);
}
...
...
@@ -233,7 +233,7 @@ static int cxgb_up(struct adapter *adapter)
t1_sge_start
(
adapter
->
sge
);
t1_interrupts_enable
(
adapter
);
out_err:
out_err:
return
err
;
}
...
...
@@ -749,7 +749,7 @@ static int set_sge_param(struct net_device *dev, struct ethtool_ringparam *e)
return
-
EINVAL
;
if
(
adapter
->
flags
&
FULL_INIT_DONE
)
return
-
EBUSY
;
return
-
EBUSY
;
adapter
->
params
.
sge
.
freelQ_size
[
!
jumbo_fl
]
=
e
->
rx_pending
;
adapter
->
params
.
sge
.
freelQ_size
[
jumbo_fl
]
=
e
->
rx_jumbo_pending
;
...
...
@@ -764,7 +764,7 @@ static int set_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
struct
adapter
*
adapter
=
dev
->
priv
;
adapter
->
params
.
sge
.
rx_coalesce_usecs
=
c
->
rx_coalesce_usecs
;
adapter
->
params
.
sge
.
coalesce_enable
=
c
->
use_adaptive_rx_coalesce
;
adapter
->
params
.
sge
.
coalesce_enable
=
c
->
use_adaptive_rx_coalesce
;
adapter
->
params
.
sge
.
sample_interval_usecs
=
c
->
rate_sample_interval
;
t1_sge_set_coalesce_params
(
adapter
->
sge
,
&
adapter
->
params
.
sge
);
return
0
;
...
...
@@ -782,9 +782,9 @@ static int get_coalesce(struct net_device *dev, struct ethtool_coalesce *c)
static
int
get_eeprom_len
(
struct
net_device
*
dev
)
{
struct
adapter
*
adapter
=
dev
->
priv
;
struct
adapter
*
adapter
=
dev
->
priv
;
return
t1_is_asic
(
adapter
)
?
EEPROM_SIZE
:
0
;
return
t1_is_asic
(
adapter
)
?
EEPROM_SIZE
:
0
;
}
#define EEPROM_MAGIC(ap) \
...
...
@@ -848,7 +848,7 @@ static int t1_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
u32
val
;
if
(
!
phy
->
mdio_read
)
return
-
EOPNOTSUPP
;
return
-
EOPNOTSUPP
;
phy
->
mdio_read
(
adapter
,
data
->
phy_id
,
0
,
data
->
reg_num
&
0x1f
,
&
val
);
data
->
val_out
=
val
;
...
...
@@ -860,7 +860,7 @@ static int t1_ioctl(struct net_device *dev, struct ifreq *req, int cmd)
if
(
!
capable
(
CAP_NET_ADMIN
))
return
-
EPERM
;
if
(
!
phy
->
mdio_write
)
return
-
EOPNOTSUPP
;
return
-
EOPNOTSUPP
;
phy
->
mdio_write
(
adapter
,
data
->
phy_id
,
0
,
data
->
reg_num
&
0x1f
,
data
->
val_in
);
break
;
...
...
@@ -879,9 +879,9 @@ static int t1_change_mtu(struct net_device *dev, int new_mtu)
struct
cmac
*
mac
=
adapter
->
port
[
dev
->
if_port
].
mac
;
if
(
!
mac
->
ops
->
set_mtu
)
return
-
EOPNOTSUPP
;
return
-
EOPNOTSUPP
;
if
(
new_mtu
<
68
)
return
-
EINVAL
;
return
-
EINVAL
;
if
((
ret
=
mac
->
ops
->
set_mtu
(
mac
,
new_mtu
)))
return
ret
;
dev
->
mtu
=
new_mtu
;
...
...
@@ -1211,9 +1211,9 @@ static int __devinit init_one(struct pci_dev *pdev,
return
0
;
out_release_adapter_res:
out_release_adapter_res:
t1_free_sw_modules
(
adapter
);
out_free_dev:
out_free_dev:
if
(
adapter
)
{
if
(
adapter
->
regs
)
iounmap
(
adapter
->
regs
);
...
...
@@ -1222,7 +1222,7 @@ static int __devinit init_one(struct pci_dev *pdev,
free_netdev
(
adapter
->
port
[
i
].
dev
);
}
pci_release_regions
(
pdev
);
out_disable_pdev:
out_disable_pdev:
pci_disable_device
(
pdev
);
pci_set_drvdata
(
pdev
,
NULL
);
return
err
;
...
...
@@ -1273,20 +1273,20 @@ static int t1_clock(struct adapter *adapter, int mode)
int
M_MEM_VAL
;
enum
{
M_CORE_BITS
=
9
,
T_CORE_VAL
=
0
,
T_CORE_BITS
=
2
,
N_CORE_VAL
=
0
,
N_CORE_BITS
=
2
,
M_MEM_BITS
=
9
,
T_MEM_VAL
=
0
,
T_MEM_BITS
=
2
,
N_MEM_VAL
=
0
,
N_MEM_BITS
=
2
,
NP_LOAD
=
1
<<
17
,
S_LOAD_MEM
=
1
<<
5
,
S_LOAD_CORE
=
1
<<
6
,
S_CLOCK
=
1
<<
3
M_CORE_BITS
=
9
,
T_CORE_VAL
=
0
,
T_CORE_BITS
=
2
,
N_CORE_VAL
=
0
,
N_CORE_BITS
=
2
,
M_MEM_BITS
=
9
,
T_MEM_VAL
=
0
,
T_MEM_BITS
=
2
,
N_MEM_VAL
=
0
,
N_MEM_BITS
=
2
,
NP_LOAD
=
1
<<
17
,
S_LOAD_MEM
=
1
<<
5
,
S_LOAD_CORE
=
1
<<
6
,
S_CLOCK
=
1
<<
3
};
if
(
!
t1_is_T1B
(
adapter
))
...
...
drivers/net/chelsio/elmer0.h
View file @
356bd146
...
...
@@ -46,14 +46,14 @@ enum {
};
/* ELMER0 registers */
#define A_ELMER0_VERSION
0x100000
#define A_ELMER0_PHY_CFG
0x100004
#define A_ELMER0_INT_ENABLE
0x100008
#define A_ELMER0_INT_CAUSE
0x10000c
#define A_ELMER0_GPI_CFG
0x100010
#define A_ELMER0_GPI_STAT
0x100014
#define A_ELMER0_GPO
0x100018
#define A_ELMER0_PORT0_MI1_CFG
0x400000
#define A_ELMER0_VERSION
0x100000
#define A_ELMER0_PHY_CFG
0x100004
#define A_ELMER0_INT_ENABLE
0x100008
#define A_ELMER0_INT_CAUSE
0x10000c
#define A_ELMER0_GPI_CFG
0x100010
#define A_ELMER0_GPI_STAT
0x100014
#define A_ELMER0_GPO
0x100018
#define A_ELMER0_PORT0_MI1_CFG
0x400000
#define S_MI1_MDI_ENABLE 0
#define V_MI1_MDI_ENABLE(x) ((x) << S_MI1_MDI_ENABLE)
...
...
@@ -111,18 +111,18 @@ enum {
#define V_MI1_OP_BUSY(x) ((x) << S_MI1_OP_BUSY)
#define F_MI1_OP_BUSY V_MI1_OP_BUSY(1U)
#define A_ELMER0_PORT1_MI1_CFG
0x500000
#define A_ELMER0_PORT1_MI1_ADDR
0x500004
#define A_ELMER0_PORT1_MI1_DATA
0x500008
#define A_ELMER0_PORT1_MI1_OP
0x50000c
#define A_ELMER0_PORT2_MI1_CFG
0x600000
#define A_ELMER0_PORT2_MI1_ADDR
0x600004
#define A_ELMER0_PORT2_MI1_DATA
0x600008
#define A_ELMER0_PORT2_MI1_OP
0x60000c
#define A_ELMER0_PORT3_MI1_CFG
0x700000
#define A_ELMER0_PORT3_MI1_ADDR
0x700004
#define A_ELMER0_PORT3_MI1_DATA
0x700008
#define A_ELMER0_PORT3_MI1_OP
0x70000c
#define A_ELMER0_PORT1_MI1_CFG
0x500000
#define A_ELMER0_PORT1_MI1_ADDR
0x500004
#define A_ELMER0_PORT1_MI1_DATA
0x500008
#define A_ELMER0_PORT1_MI1_OP
0x50000c
#define A_ELMER0_PORT2_MI1_CFG
0x600000
#define A_ELMER0_PORT2_MI1_ADDR
0x600004
#define A_ELMER0_PORT2_MI1_DATA
0x600008
#define A_ELMER0_PORT2_MI1_OP
0x60000c
#define A_ELMER0_PORT3_MI1_CFG
0x700000
#define A_ELMER0_PORT3_MI1_ADDR
0x700004
#define A_ELMER0_PORT3_MI1_DATA
0x700008
#define A_ELMER0_PORT3_MI1_OP
0x70000c
/* Simple bit definition for GPI and GP0 registers. */
#define ELMER0_GP_BIT0 0x0001
...
...
drivers/net/chelsio/espi.c
View file @
356bd146
...
...
@@ -202,9 +202,9 @@ static void espi_setup_for_pm3393(adapter_t *adapter)
static
void
espi_setup_for_vsc7321
(
adapter_t
*
adapter
)
{
writel
(
0x1f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN0
);
writel
(
0x1f401f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN1
);
writel
(
0x1f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN2
);
writel
(
0x1f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN0
);
writel
(
0x1f401f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN1
);
writel
(
0x1f4
,
adapter
->
regs
+
A_ESPI_SCH_TOKEN2
);
writel
(
0xa00
,
adapter
->
regs
+
A_ESPI_RX_FIFO_ALMOST_FULL_WATERMARK
);
writel
(
0x1ff
,
adapter
->
regs
+
A_ESPI_RX_FIFO_ALMOST_EMPTY_WATERMARK
);
writel
(
1
,
adapter
->
regs
+
A_ESPI_CALENDAR_LENGTH
);
...
...
@@ -247,10 +247,10 @@ int t1_espi_init(struct peespi *espi, int mac_type, int nports)
writel
(
V_OUT_OF_SYNC_COUNT
(
4
)
|
V_DIP2_PARITY_ERR_THRES
(
3
)
|
V_DIP4_THRES
(
1
),
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
writel
(
nports
==
4
?
0x200040
:
0x1000080
,
writel
(
nports
==
4
?
0x200040
:
0x1000080
,
adapter
->
regs
+
A_ESPI_MAXBURST1_MAXBURST2
);
}
else
writel
(
0x800100
,
adapter
->
regs
+
A_ESPI_MAXBURST1_MAXBURST2
);
writel
(
0x800100
,
adapter
->
regs
+
A_ESPI_MAXBURST1_MAXBURST2
);
if
(
mac_type
==
CHBT_MAC_PM3393
)
espi_setup_for_pm3393
(
adapter
);
...
...
@@ -341,32 +341,31 @@ u32 t1_espi_get_mon(adapter_t *adapter, u32 addr, u8 wait)
* compare with t1_espi_get_mon(), it reads espiInTxSop[0 ~ 3] in
* one shot, since there is no per port counter on the out side.
*/
int
t1_espi_get_mon_t204
(
adapter_t
*
adapter
,
u32
*
valp
,
u8
wait
)
int
t1_espi_get_mon_t204
(
adapter_t
*
adapter
,
u32
*
valp
,
u8
wait
)
{
struct
peespi
*
espi
=
adapter
->
espi
;
struct
peespi
*
espi
=
adapter
->
espi
;
u8
i
,
nport
=
(
u8
)
adapter
->
params
.
nports
;
if
(
!
wait
)
{
if
(
!
spin_trylock
(
&
espi
->
lock
))
return
-
1
;
}
else
spin_lock
(
&
espi
->
lock
);
if
(
!
wait
)
{
if
(
!
spin_trylock
(
&
espi
->
lock
))
return
-
1
;
}
else
spin_lock
(
&
espi
->
lock
);
if
(
(
espi
->
misc_ctrl
&
MON_MASK
)
!=
F_MONITORED_DIRECTION
)
{
if
(
(
espi
->
misc_ctrl
&
MON_MASK
)
!=
F_MONITORED_DIRECTION
)
{
espi
->
misc_ctrl
=
(
espi
->
misc_ctrl
&
~
MON_MASK
)
|
F_MONITORED_DIRECTION
;
writel
(
espi
->
misc_ctrl
,
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
}
writel
(
espi
->
misc_ctrl
,
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
}
for
(
i
=
0
;
i
<
nport
;
i
++
,
valp
++
)
{
if
(
i
)
{
writel
(
espi
->
misc_ctrl
|
V_MONITORED_PORT_NUM
(
i
),
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
}
*
valp
=
readl
(
adapter
->
regs
+
A_ESPI_SCH_TOKEN3
);
}
*
valp
=
readl
(
adapter
->
regs
+
A_ESPI_SCH_TOKEN3
);
}
writel
(
espi
->
misc_ctrl
,
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
spin_unlock
(
&
espi
->
lock
);
return
0
;
writel
(
espi
->
misc_ctrl
,
adapter
->
regs
+
A_ESPI_MISC_CONTROL
);
spin_unlock
(
&
espi
->
lock
);
return
0
;
}
drivers/net/chelsio/fpga_defs.h
View file @
356bd146
...
...
@@ -98,9 +98,9 @@
#define A_MI0_DATA_INT 0xb10
/* GMAC registers */
#define A_GMAC_MACID_LO
0x28
#define A_GMAC_MACID_HI
0x2c
#define A_GMAC_CSR
0x30
#define A_GMAC_MACID_LO
0x28
#define A_GMAC_MACID_HI
0x2c
#define A_GMAC_CSR
0x30
#define S_INTERFACE 0
#define M_INTERFACE 0x3
...
...
drivers/net/chelsio/gmac.h
View file @
356bd146
...
...
@@ -42,8 +42,15 @@
#include "common.h"
enum
{
MAC_STATS_UPDATE_FAST
,
MAC_STATS_UPDATE_FULL
};
enum
{
MAC_DIRECTION_RX
=
1
,
MAC_DIRECTION_TX
=
2
};
enum
{
MAC_STATS_UPDATE_FAST
,
MAC_STATS_UPDATE_FULL
};
enum
{
MAC_DIRECTION_RX
=
1
,
MAC_DIRECTION_TX
=
2
};
struct
cmac_statistics
{
/* Transmit */
...
...
drivers/net/chelsio/ixf1010.c
View file @
356bd146
...
...
@@ -358,8 +358,8 @@ static void enable_port(struct cmac *mac)
val
|=
(
1
<<
index
);
t1_tpi_write
(
adapter
,
REG_PORT_ENABLE
,
val
);
index
<<=
2
;
if
(
is_T2
(
adapter
))
{
index
<<=
2
;
if
(
is_T2
(
adapter
))
{
/* T204: set the Fifo water level & threshold */
t1_tpi_write
(
adapter
,
RX_FIFO_HIGH_WATERMARK_BASE
+
index
,
0x740
);
t1_tpi_write
(
adapter
,
RX_FIFO_LOW_WATERMARK_BASE
+
index
,
0x730
);
...
...
drivers/net/chelsio/mv88e1xxx.c
View file @
356bd146
...
...
@@ -73,9 +73,8 @@ static int mv88e1xxx_interrupt_enable(struct cphy *cphy)
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
&
elmer
);
elmer
|=
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
elmer
|=
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
;
}
if
(
is_T2
(
cphy
->
adapter
))
elmer
|=
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
;
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
elmer
);
}
return
0
;
...
...
@@ -92,9 +91,8 @@ static int mv88e1xxx_interrupt_disable(struct cphy *cphy)
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
&
elmer
);
elmer
&=
~
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
if
(
is_T2
(
cphy
->
adapter
))
elmer
&=
~
(
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
);
}
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
elmer
);
}
return
0
;
...
...
@@ -112,9 +110,8 @@ static int mv88e1xxx_interrupt_clear(struct cphy *cphy)
if
(
t1_is_asic
(
cphy
->
adapter
))
{
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_CAUSE
,
&
elmer
);
elmer
|=
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
if
(
is_T2
(
cphy
->
adapter
))
elmer
|=
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
;
}
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_CAUSE
,
elmer
);
}
return
0
;
...
...
@@ -300,7 +297,7 @@ static int mv88e1xxx_interrupt_handler(struct cphy *cphy)
/*
* Loop until cause reads zero. Need to handle bouncing interrupts.
*/
*/
while
(
1
)
{
u32
cause
;
...
...
@@ -379,11 +376,11 @@ static struct cphy *mv88e1xxx_phy_create(adapter_t *adapter, int phy_addr,
}
(
void
)
mv88e1xxx_downshift_set
(
cphy
,
1
);
/* Enable downshift */
/* LED */
/* LED */
if
(
is_T2
(
adapter
))
{
(
void
)
simple_mdio_write
(
cphy
,
MV88E1XXX_LED_CONTROL_REGISTER
,
0x1
);
}
}
return
cphy
;
}
...
...
drivers/net/chelsio/pm3393.c
View file @
356bd146
...
...
@@ -455,8 +455,8 @@ static void pm3393_rmon_update(struct adapter *adapter, u32 offs, u64 *val,
static
const
struct
cmac_statistics
*
pm3393_update_statistics
(
struct
cmac
*
mac
,
int
flag
)
{
u64
ro
;
u32
val0
,
val1
,
val2
,
val3
;
u64
ro
;
u32
val0
,
val1
,
val2
,
val3
;
/* Snap the counters */
pmwrite
(
mac
,
SUNI1x10GEXP_REG_MSTAT_CONTROL
,
...
...
@@ -534,9 +534,9 @@ static int pm3393_macaddress_set(struct cmac *cmac, u8 ma[6])
/* Store local copy */
memcpy
(
cmac
->
instance
->
mac_addr
,
ma
,
6
);
lo
=
((
u32
)
ma
[
1
]
<<
8
)
|
(
u32
)
ma
[
0
];
lo
=
((
u32
)
ma
[
1
]
<<
8
)
|
(
u32
)
ma
[
0
];
mid
=
((
u32
)
ma
[
3
]
<<
8
)
|
(
u32
)
ma
[
2
];
hi
=
((
u32
)
ma
[
5
]
<<
8
)
|
(
u32
)
ma
[
4
];
hi
=
((
u32
)
ma
[
5
]
<<
8
)
|
(
u32
)
ma
[
4
];
/* Disable Rx/Tx MAC before configuring it. */
if
(
enabled
)
...
...
drivers/net/chelsio/sge.c
View file @
356bd146
...
...
@@ -195,7 +195,7 @@ struct cmdQ {
struct
cmdQ_e
*
entries
;
/* HW command descriptor Q */
struct
cmdQ_ce
*
centries
;
/* SW command context descriptor Q */
dma_addr_t
dma_addr
;
/* DMA addr HW command descriptor Q */
spinlock_t
lock
;
/* Lock to protect cmdQ enqueuing */
spinlock_t
lock
;
/* Lock to protect cmdQ enqueuing */
};
struct
freelQ
{
...
...
@@ -241,9 +241,9 @@ struct sched_port {
/* Per T204 device */
struct
sched
{
ktime_t
last_updated
;
/* last time quotas were computed */
unsigned
int
max_avail
;
/* max bits to be sent to any port */
unsigned
int
port
;
/* port index (round robin ports) */
unsigned
int
num
;
/* num skbs in per port queues */
unsigned
int
max_avail
;
/* max bits to be sent to any port */
unsigned
int
port
;
/* port index (round robin ports) */
unsigned
int
num
;
/* num skbs in per port queues */
struct
sched_port
p
[
MAX_NPORTS
];
struct
tasklet_struct
sched_tsk
;
/* tasklet used to run scheduler */
};
...
...
@@ -259,10 +259,10 @@ static void restart_sched(unsigned long);
* contention.
*/
struct
sge
{
struct
adapter
*
adapter
;
/* adapter backpointer */
struct
adapter
*
adapter
;
/* adapter backpointer */
struct
net_device
*
netdev
;
/* netdevice backpointer */
struct
freelQ
freelQ
[
SGE_FREELQ_N
];
/* buffer free lists */
struct
respQ
respQ
;
/* response Q */
struct
freelQ
freelQ
[
SGE_FREELQ_N
];
/* buffer free lists */
struct
respQ
respQ
;
/* response Q */
unsigned
long
stopped_tx_queues
;
/* bitmap of suspended Tx queues */
unsigned
int
rx_pkt_pad
;
/* RX padding for L2 packets */
unsigned
int
jumbo_fl
;
/* jumbo freelist Q index */
...
...
@@ -460,7 +460,7 @@ static struct sk_buff *sched_skb(struct sge *sge, struct sk_buff *skb,
if
(
credits
<
MAX_SKB_FRAGS
+
1
)
goto
out
;
again:
again:
for
(
i
=
0
;
i
<
MAX_NPORTS
;
i
++
)
{
s
->
port
=
++
s
->
port
&
(
MAX_NPORTS
-
1
);
skbq
=
&
s
->
p
[
s
->
port
].
skbq
;
...
...
@@ -483,8 +483,8 @@ static struct sk_buff *sched_skb(struct sge *sge, struct sk_buff *skb,
if
(
update
--
&&
sched_update_avail
(
sge
))
goto
again
;
out:
/* If there are more pending skbs, we use the hardware to schedule us
out:
/* If there are more pending skbs, we use the hardware to schedule us
* again.
*/
if
(
s
->
num
&&
!
skb
)
{
...
...
@@ -641,14 +641,14 @@ static void free_cmdQ_buffers(struct sge *sge, struct cmdQ *q, unsigned int n)
if
(
likely
(
pci_unmap_len
(
ce
,
dma_len
)))
{
pci_unmap_single
(
pdev
,
pci_unmap_addr
(
ce
,
dma_addr
),
pci_unmap_len
(
ce
,
dma_len
),
pci_unmap_len
(
ce
,
dma_len
),
PCI_DMA_TODEVICE
);
q
->
sop
=
0
;
}
}
else
{
if
(
likely
(
pci_unmap_len
(
ce
,
dma_len
)))
{
pci_unmap_page
(
pdev
,
pci_unmap_addr
(
ce
,
dma_addr
),
pci_unmap_len
(
ce
,
dma_len
),
pci_unmap_len
(
ce
,
dma_len
),
PCI_DMA_TODEVICE
);
}
}
...
...
@@ -770,7 +770,7 @@ void t1_set_vlan_accel(struct adapter *adapter, int on_off)
static
void
configure_sge
(
struct
sge
*
sge
,
struct
sge_params
*
p
)
{
struct
adapter
*
ap
=
sge
->
adapter
;
writel
(
0
,
ap
->
regs
+
A_SG_CONTROL
);
setup_ring_params
(
ap
,
sge
->
cmdQ
[
0
].
dma_addr
,
sge
->
cmdQ
[
0
].
size
,
A_SG_CMD0BASELWR
,
A_SG_CMD0BASEUPR
,
A_SG_CMD0SIZE
);
...
...
@@ -850,7 +850,6 @@ static void refill_free_list(struct sge *sge, struct freelQ *q)
struct
freelQ_e
*
e
=
&
q
->
entries
[
q
->
pidx
];
unsigned
int
dma_len
=
q
->
rx_buffer_size
-
q
->
dma_offset
;
while
(
q
->
credits
<
q
->
size
)
{
struct
sk_buff
*
skb
;
dma_addr_t
mapping
;
...
...
@@ -881,7 +880,6 @@ static void refill_free_list(struct sge *sge, struct freelQ *q)
}
q
->
credits
++
;
}
}
/*
...
...
@@ -1075,12 +1073,12 @@ static inline struct sk_buff *get_packet(struct pci_dev *pdev,
skb_put
(
skb
,
len
);
pci_dma_sync_single_for_cpu
(
pdev
,
pci_unmap_addr
(
ce
,
dma_addr
),
pci_unmap_len
(
ce
,
dma_len
),
pci_unmap_len
(
ce
,
dma_len
),
PCI_DMA_FROMDEVICE
);
memcpy
(
skb
->
data
,
ce
->
skb
->
data
+
dma_pad
,
len
);
pci_dma_sync_single_for_device
(
pdev
,
pci_unmap_addr
(
ce
,
dma_addr
),
pci_unmap_len
(
ce
,
dma_len
),
pci_unmap_len
(
ce
,
dma_len
),
PCI_DMA_FROMDEVICE
);
}
else
if
(
!
drop_thres
)
goto
use_orig_buf
;
...
...
@@ -1137,6 +1135,7 @@ static void unexpected_offload(struct adapter *adapter, struct freelQ *fl)
static
inline
unsigned
int
compute_large_page_tx_descs
(
struct
sk_buff
*
skb
)
{
unsigned
int
count
=
0
;
if
(
PAGE_SIZE
>
SGE_TX_DESC_MAX_PLEN
)
{
unsigned
int
nfrags
=
skb_shinfo
(
skb
)
->
nr_frags
;
unsigned
int
i
,
len
=
skb
->
len
-
skb
->
data_len
;
...
...
@@ -1343,7 +1342,7 @@ static void restart_sched(unsigned long arg)
while
((
skb
=
sched_skb
(
sge
,
NULL
,
credits
))
!=
NULL
)
{
unsigned
int
genbit
,
pidx
,
count
;
count
=
1
+
skb_shinfo
(
skb
)
->
nr_frags
;
count
+=
compute_large_page_tx_descs
(
skb
);
count
+=
compute_large_page_tx_descs
(
skb
);
q
->
in_use
+=
count
;
genbit
=
q
->
genbit
;
pidx
=
q
->
pidx
;
...
...
@@ -1466,11 +1465,11 @@ static void restart_tx_queues(struct sge *sge)
}
/*
* update_tx_info is called from the interrupt handler/NAPI to return cmdQ0
* update_tx_info is called from the interrupt handler/NAPI to return cmdQ0
* information.
*/
static
unsigned
int
update_tx_info
(
struct
adapter
*
adapter
,
unsigned
int
flags
,
static
unsigned
int
update_tx_info
(
struct
adapter
*
adapter
,
unsigned
int
flags
,
unsigned
int
pr0
)
{
struct
sge
*
sge
=
adapter
->
sge
;
...
...
@@ -1513,14 +1512,14 @@ static int process_responses(struct adapter *adapter, int budget)
int
budget_left
=
budget
;
unsigned
int
flags
=
0
;
unsigned
int
cmdq_processed
[
SGE_CMDQ_N
]
=
{
0
,
0
};
while
(
likely
(
budget_left
&&
e
->
GenerationBit
==
q
->
genbit
))
{
flags
|=
e
->
Qsleeping
;
cmdq_processed
[
0
]
+=
e
->
Cmdq0CreditReturn
;
cmdq_processed
[
1
]
+=
e
->
Cmdq1CreditReturn
;
/* We batch updates to the TX side to avoid cacheline
* ping-pong of TX state information on MP where the sender
* might run on a different CPU than this function...
...
...
@@ -1569,7 +1568,7 @@ static int process_responses(struct adapter *adapter, int budget)
--
budget_left
;
}
flags
=
update_tx_info
(
adapter
,
flags
,
cmdq_processed
[
0
]);
flags
=
update_tx_info
(
adapter
,
flags
,
cmdq_processed
[
0
]);
sge
->
cmdQ
[
1
].
processed
+=
cmdq_processed
[
1
];
budget
-=
budget_left
;
...
...
@@ -1597,7 +1596,7 @@ static int process_pure_responses(struct adapter *adapter, struct respQ_e *e)
cmdq_processed
[
0
]
+=
e
->
Cmdq0CreditReturn
;
cmdq_processed
[
1
]
+=
e
->
Cmdq1CreditReturn
;
e
++
;
if
(
unlikely
(
++
q
->
cidx
==
q
->
size
))
{
q
->
cidx
=
0
;
...
...
@@ -1613,7 +1612,7 @@ static int process_pure_responses(struct adapter *adapter, struct respQ_e *e)
sge
->
stats
.
pure_rsps
++
;
}
while
(
e
->
GenerationBit
==
q
->
genbit
&&
!
e
->
DataValid
);
flags
=
update_tx_info
(
adapter
,
flags
,
cmdq_processed
[
0
]);
flags
=
update_tx_info
(
adapter
,
flags
,
cmdq_processed
[
0
]);
sge
->
cmdQ
[
1
].
processed
+=
cmdq_processed
[
1
];
return
e
->
GenerationBit
==
q
->
genbit
;
...
...
@@ -1636,12 +1635,12 @@ int t1_poll(struct net_device *dev, int *budget)
if
(
work_done
>=
effective_budget
)
return
1
;
spin_lock_irq
(
&
adapter
->
async_lock
);
spin_lock_irq
(
&
adapter
->
async_lock
);
__netif_rx_complete
(
dev
);
writel
(
adapter
->
sge
->
respQ
.
cidx
,
adapter
->
regs
+
A_SG_SLEEPING
);
writel
(
adapter
->
slow_intr_mask
|
F_PL_INTR_SGE_DATA
,
adapter
->
regs
+
A_PL_ENABLE
);
spin_unlock_irq
(
&
adapter
->
async_lock
);
spin_unlock_irq
(
&
adapter
->
async_lock
);
return
0
;
}
...
...
@@ -1652,9 +1651,9 @@ int t1_poll(struct net_device *dev, int *budget)
irqreturn_t
t1_interrupt
(
int
irq
,
void
*
data
)
{
struct
adapter
*
adapter
=
data
;
struct
net_device
*
dev
=
adapter
->
sge
->
netdev
;
struct
net_device
*
dev
=
adapter
->
sge
->
netdev
;
struct
sge
*
sge
=
adapter
->
sge
;
u32
cause
;
u32
cause
;
int
handled
=
0
;
cause
=
readl
(
adapter
->
regs
+
A_PL_CAUSE
);
...
...
@@ -1662,12 +1661,12 @@ irqreturn_t t1_interrupt(int irq, void *data)
return
IRQ_NONE
;
spin_lock
(
&
adapter
->
async_lock
);
if
(
cause
&
F_PL_INTR_SGE_DATA
)
{
if
(
cause
&
F_PL_INTR_SGE_DATA
)
{
struct
respQ
*
q
=
&
adapter
->
sge
->
respQ
;
struct
respQ_e
*
e
=
&
q
->
entries
[
q
->
cidx
];
handled
=
1
;
writel
(
F_PL_INTR_SGE_DATA
,
adapter
->
regs
+
A_PL_CAUSE
);
handled
=
1
;
writel
(
F_PL_INTR_SGE_DATA
,
adapter
->
regs
+
A_PL_CAUSE
);
if
(
e
->
GenerationBit
==
q
->
genbit
&&
__netif_rx_schedule_prep
(
dev
))
{
...
...
@@ -1796,7 +1795,7 @@ static int t1_sge_tx(struct sk_buff *skb, struct adapter *adapter,
* through the scheduler.
*/
if
(
sge
->
tx_sched
&&
!
qid
&&
skb
->
dev
)
{
use_sched:
use_sched:
use_sched_skb
=
1
;
/* Note that the scheduler might return a different skb than
* the one passed in.
...
...
@@ -1900,7 +1899,7 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
cpl
=
(
struct
cpl_tx_pkt
*
)
hdr
;
}
else
{
/*
* Packets shorter than ETH_HLEN can break the MAC, drop them
* Packets shorter than ETH_HLEN can break the MAC, drop them
* early. Also, we may get oversized packets because some
* parts of the kernel don't handle our unusual hard_header_len
* right, drop those too.
...
...
@@ -1984,9 +1983,9 @@ int t1_start_xmit(struct sk_buff *skb, struct net_device *dev)
* then silently discard to avoid leak.
*/
if
(
unlikely
(
ret
!=
NETDEV_TX_OK
&&
skb
!=
orig_skb
))
{
dev_kfree_skb_any
(
skb
);
dev_kfree_skb_any
(
skb
);
ret
=
NETDEV_TX_OK
;
}
}
return
ret
;
}
...
...
@@ -2099,31 +2098,35 @@ static void espibug_workaround_t204(unsigned long data)
if
(
adapter
->
open_device_map
&
PORT_MASK
)
{
int
i
;
if
(
t1_espi_get_mon_t204
(
adapter
,
&
(
seop
[
0
]),
0
)
<
0
)
{
if
(
t1_espi_get_mon_t204
(
adapter
,
&
(
seop
[
0
]),
0
)
<
0
)
return
;
}
for
(
i
=
0
;
i
<
nports
;
i
++
)
{
struct
sk_buff
*
skb
=
sge
->
espibug_skb
[
i
];
if
(
(
netif_running
(
adapter
->
port
[
i
].
dev
))
&&
!
(
netif_queue_stopped
(
adapter
->
port
[
i
].
dev
))
&&
(
seop
[
i
]
&&
((
seop
[
i
]
&
0xfff
)
==
0
))
&&
skb
)
{
if
(
!
skb
->
cb
[
0
])
{
u8
ch_mac_addr
[
ETH_ALEN
]
=
{
0x0
,
0x7
,
0x43
,
0x0
,
0x0
,
0x0
};
memcpy
(
skb
->
data
+
sizeof
(
struct
cpl_tx_pkt
),
ch_mac_addr
,
ETH_ALEN
);
memcpy
(
skb
->
data
+
skb
->
len
-
10
,
ch_mac_addr
,
ETH_ALEN
);
skb
->
cb
[
0
]
=
0xff
;
}
/* bump the reference count to avoid freeing of
* the skb once the DMA has completed.
*/
skb
=
skb_get
(
skb
);
t1_sge_tx
(
skb
,
adapter
,
0
,
adapter
->
port
[
i
].
dev
);
struct
sk_buff
*
skb
=
sge
->
espibug_skb
[
i
];
if
(
!
netif_running
(
adapter
->
port
[
i
].
dev
)
||
netif_queue_stopped
(
adapter
->
port
[
i
].
dev
)
||
!
seop
[
i
]
||
((
seop
[
i
]
&
0xfff
)
!=
0
)
||
!
skb
)
continue
;
if
(
!
skb
->
cb
[
0
])
{
u8
ch_mac_addr
[
ETH_ALEN
]
=
{
0x0
,
0x7
,
0x43
,
0x0
,
0x0
,
0x0
};
memcpy
(
skb
->
data
+
sizeof
(
struct
cpl_tx_pkt
),
ch_mac_addr
,
ETH_ALEN
);
memcpy
(
skb
->
data
+
skb
->
len
-
10
,
ch_mac_addr
,
ETH_ALEN
);
skb
->
cb
[
0
]
=
0xff
;
}
/* bump the reference count to avoid freeing of
* the skb once the DMA has completed.
*/
skb
=
skb_get
(
skb
);
t1_sge_tx
(
skb
,
adapter
,
0
,
adapter
->
port
[
i
].
dev
);
}
}
mod_timer
(
&
sge
->
espibug_timer
,
jiffies
+
sge
->
espibug_timeout
);
...
...
@@ -2202,7 +2205,7 @@ struct sge * __devinit t1_sge_create(struct adapter *adapter,
if
(
adapter
->
params
.
nports
>
1
)
sge
->
espibug_timeout
=
HZ
/
100
;
}
p
->
cmdQ_size
[
0
]
=
SGE_CMDQ0_E_N
;
p
->
cmdQ_size
[
1
]
=
SGE_CMDQ1_E_N
;
...
...
drivers/net/chelsio/subr.c
View file @
356bd146
...
...
@@ -223,13 +223,13 @@ static int fpga_slow_intr(adapter_t *adapter)
t1_sge_intr_error_handler
(
adapter
->
sge
);
if
(
cause
&
FPGA_PCIX_INTERRUPT_GMAC
)
fpga_phy_intr_handler
(
adapter
);
fpga_phy_intr_handler
(
adapter
);
if
(
cause
&
FPGA_PCIX_INTERRUPT_TP
)
{
/*
/*
* FPGA doesn't support MC4 interrupts and it requires
* this odd layer of indirection for MC5.
*/
*/
u32
tp_cause
=
readl
(
adapter
->
regs
+
FPGA_TP_ADDR_INTERRUPT_CAUSE
);
/* Clear TP interrupt */
...
...
@@ -262,8 +262,7 @@ static int mi1_wait_until_ready(adapter_t *adapter, int mi1_reg)
udelay
(
10
);
}
while
(
busy
&&
--
attempts
);
if
(
busy
)
CH_ALERT
(
"%s: MDIO operation timed out
\n
"
,
adapter
->
name
);
CH_ALERT
(
"%s: MDIO operation timed out
\n
"
,
adapter
->
name
);
return
busy
;
}
...
...
@@ -605,23 +604,23 @@ int t1_elmer0_ext_intr_handler(adapter_t *adapter)
switch
(
board_info
(
adapter
)
->
board
)
{
#ifdef CONFIG_CHELSIO_T1_1G
case
CHBT_BOARD_CHT204
:
case
CHBT_BOARD_CHT204E
:
case
CHBT_BOARD_CHN204
:
case
CHBT_BOARD_CHT204V
:
{
int
i
,
port_bit
;
case
CHBT_BOARD_CHT204
:
case
CHBT_BOARD_CHT204E
:
case
CHBT_BOARD_CHN204
:
case
CHBT_BOARD_CHT204V
:
{
int
i
,
port_bit
;
for_each_port
(
adapter
,
i
)
{
port_bit
=
i
+
1
;
if
(
!
(
cause
&
(
1
<<
port_bit
)))
continue
;
phy
=
adapter
->
port
[
i
].
phy
;
phy
=
adapter
->
port
[
i
].
phy
;
phy_cause
=
phy
->
ops
->
interrupt_handler
(
phy
);
if
(
phy_cause
&
cphy_cause_link_change
)
t1_link_changed
(
adapter
,
i
);
}
break
;
}
break
;
}
case
CHBT_BOARD_CHT101
:
if
(
cause
&
ELMER0_GP_BIT1
)
{
/* Marvell 88E1111 interrupt */
phy
=
adapter
->
port
[
0
].
phy
;
...
...
@@ -632,13 +631,13 @@ int t1_elmer0_ext_intr_handler(adapter_t *adapter)
break
;
case
CHBT_BOARD_7500
:
{
int
p
;
/*
/*
* Elmer0's interrupt cause isn't useful here because there is
* only one bit that can be set for all 4 ports. This means
* we are forced to check every PHY's interrupt status
* register to see who initiated the interrupt.
*/
for_each_port
(
adapter
,
p
)
{
*/
for_each_port
(
adapter
,
p
)
{
phy
=
adapter
->
port
[
p
].
phy
;
phy_cause
=
phy
->
ops
->
interrupt_handler
(
phy
);
if
(
phy_cause
&
cphy_cause_link_change
)
...
...
@@ -659,7 +658,7 @@ int t1_elmer0_ext_intr_handler(adapter_t *adapter)
break
;
case
CHBT_BOARD_8000
:
case
CHBT_BOARD_CHT110
:
CH_DBG
(
adapter
,
INTR
,
"External interrupt cause 0x%x
\n
"
,
CH_DBG
(
adapter
,
INTR
,
"External interrupt cause 0x%x
\n
"
,
cause
);
if
(
cause
&
ELMER0_GP_BIT1
)
{
/* PMC3393 INTB */
struct
cmac
*
mac
=
adapter
->
port
[
0
].
mac
;
...
...
@@ -671,9 +670,9 @@ int t1_elmer0_ext_intr_handler(adapter_t *adapter)
t1_tpi_read
(
adapter
,
A_ELMER0_GPI_STAT
,
&
mod_detect
);
CH_MSG
(
adapter
,
INFO
,
LINK
,
"XPAK %s
\n
"
,
CH_MSG
(
adapter
,
INFO
,
LINK
,
"XPAK %s
\n
"
,
mod_detect
?
"removed"
:
"inserted"
);
}
}
break
;
#ifdef CONFIG_CHELSIO_T1_COUGAR
case
CHBT_BOARD_COUGAR
:
...
...
@@ -757,7 +756,7 @@ void t1_interrupts_disable(adapter_t* adapter)
/* Disable PCIX & external chip interrupts. */
if
(
t1_is_asic
(
adapter
))
writel
(
0
,
adapter
->
regs
+
A_PL_ENABLE
);
writel
(
0
,
adapter
->
regs
+
A_PL_ENABLE
);
/* PCI-X interrupts */
pci_write_config_dword
(
adapter
->
pdev
,
A_PCICFG_INTR_ENABLE
,
0
);
...
...
@@ -832,11 +831,11 @@ int t1_slow_intr_handler(adapter_t *adapter)
/* Power sequencing is a work-around for Intel's XPAKs. */
static
void
power_sequence_xpak
(
adapter_t
*
adapter
)
{
u32
mod_detect
;
u32
gpo
;
u32
mod_detect
;
u32
gpo
;
/* Check for XPAK */
t1_tpi_read
(
adapter
,
A_ELMER0_GPI_STAT
,
&
mod_detect
);
/* Check for XPAK */
t1_tpi_read
(
adapter
,
A_ELMER0_GPI_STAT
,
&
mod_detect
);
if
(
!
(
ELMER0_GP_BIT5
&
mod_detect
))
{
/* XPAK is present */
t1_tpi_read
(
adapter
,
A_ELMER0_GPO
,
&
gpo
);
...
...
@@ -879,31 +878,31 @@ static int board_init(adapter_t *adapter, const struct board_info *bi)
case
CHBT_BOARD_N210
:
case
CHBT_BOARD_CHT210
:
case
CHBT_BOARD_COUGAR
:
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x800
);
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x800
);
break
;
case
CHBT_BOARD_CHT110
:
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x1800
);
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x1800
);
/* TBD XXX Might not need. This fixes a problem
* described in the Intel SR XPAK errata.
*/
power_sequence_xpak
(
adapter
);
/* TBD XXX Might not need. This fixes a problem
* described in the Intel SR XPAK errata.
*/
power_sequence_xpak
(
adapter
);
break
;
#ifdef CONFIG_CHELSIO_T1_1G
case
CHBT_BOARD_CHT204E
:
/* add config space write here */
case
CHBT_BOARD_CHT204E
:
/* add config space write here */
case
CHBT_BOARD_CHT204
:
case
CHBT_BOARD_CHT204V
:
case
CHBT_BOARD_CHN204
:
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x804
);
break
;
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x804
);
break
;
case
CHBT_BOARD_CHT101
:
case
CHBT_BOARD_7500
:
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x1804
);
t1_tpi_par
(
adapter
,
0xf
);
t1_tpi_write
(
adapter
,
A_ELMER0_GPO
,
0x1804
);
break
;
#endif
}
...
...
@@ -943,7 +942,7 @@ int t1_init_hw_modules(adapter_t *adapter)
goto
out_err
;
err
=
0
;
out_err:
out_err:
return
err
;
}
...
...
@@ -985,7 +984,7 @@ void t1_free_sw_modules(adapter_t *adapter)
if
(
adapter
->
espi
)
t1_espi_destroy
(
adapter
->
espi
);
#ifdef CONFIG_CHELSIO_T1_COUGAR
if
(
adapter
->
cspi
)
if
(
adapter
->
cspi
)
t1_cspi_destroy
(
adapter
->
cspi
);
#endif
}
...
...
@@ -1012,7 +1011,7 @@ static void __devinit init_link_config(struct link_config *lc,
CH_ERR
(
"%s: CSPI initialization failed
\n
"
,
adapter
->
name
);
goto
error
;
}
}
#endif
/*
...
...
drivers/net/chelsio/tp.c
View file @
356bd146
...
...
@@ -17,39 +17,36 @@ struct petp {
static
void
tp_init
(
adapter_t
*
ap
,
const
struct
tp_params
*
p
,
unsigned
int
tp_clk
)
{
if
(
t1_is_asic
(
ap
))
{
u32
val
;
val
=
F_TP_IN_CSPI_CPL
|
F_TP_IN_CSPI_CHECK_IP_CSUM
|
F_TP_IN_CSPI_CHECK_TCP_CSUM
|
F_TP_IN_ESPI_ETHERNET
;
if
(
!
p
->
pm_size
)
val
|=
F_OFFLOAD_DISABLE
;
else
val
|=
F_TP_IN_ESPI_CHECK_IP_CSUM
|
F_TP_IN_ESPI_CHECK_TCP_CSUM
;
writel
(
val
,
ap
->
regs
+
A_TP_IN_CONFIG
);
writel
(
F_TP_OUT_CSPI_CPL
|
F_TP_OUT_ESPI_ETHERNET
|
F_TP_OUT_ESPI_GENERATE_IP_CSUM
|
F_TP_OUT_ESPI_GENERATE_TCP_CSUM
,
ap
->
regs
+
A_TP_OUT_CONFIG
);
writel
(
V_IP_TTL
(
64
)
|
F_PATH_MTU
/* IP DF bit */
|
V_5TUPLE_LOOKUP
(
p
->
use_5tuple_mode
)
|
V_SYN_COOKIE_PARAMETER
(
29
),
ap
->
regs
+
A_TP_GLOBAL_CONFIG
);
/*
* Enable pause frame deadlock prevention.
*/
if
(
is_T2
(
ap
)
&&
ap
->
params
.
nports
>
1
)
{
u32
drop_ticks
=
DROP_MSEC
*
(
tp_clk
/
1000
);
writel
(
F_ENABLE_TX_DROP
|
F_ENABLE_TX_ERROR
|
V_DROP_TICKS_CNT
(
drop_ticks
)
|
V_NUM_PKTS_DROPPED
(
DROP_PKTS_CNT
),
ap
->
regs
+
A_TP_TX_DROP_CONFIG
);
}
u32
val
;
if
(
!
t1_is_asic
(
ap
))
return
;
val
=
F_TP_IN_CSPI_CPL
|
F_TP_IN_CSPI_CHECK_IP_CSUM
|
F_TP_IN_CSPI_CHECK_TCP_CSUM
|
F_TP_IN_ESPI_ETHERNET
;
if
(
!
p
->
pm_size
)
val
|=
F_OFFLOAD_DISABLE
;
else
val
|=
F_TP_IN_ESPI_CHECK_IP_CSUM
|
F_TP_IN_ESPI_CHECK_TCP_CSUM
;
writel
(
val
,
ap
->
regs
+
A_TP_IN_CONFIG
);
writel
(
F_TP_OUT_CSPI_CPL
|
F_TP_OUT_ESPI_ETHERNET
|
F_TP_OUT_ESPI_GENERATE_IP_CSUM
|
F_TP_OUT_ESPI_GENERATE_TCP_CSUM
,
ap
->
regs
+
A_TP_OUT_CONFIG
);
writel
(
V_IP_TTL
(
64
)
|
F_PATH_MTU
/* IP DF bit */
|
V_5TUPLE_LOOKUP
(
p
->
use_5tuple_mode
)
|
V_SYN_COOKIE_PARAMETER
(
29
),
ap
->
regs
+
A_TP_GLOBAL_CONFIG
);
/*
* Enable pause frame deadlock prevention.
*/
if
(
is_T2
(
ap
)
&&
ap
->
params
.
nports
>
1
)
{
u32
drop_ticks
=
DROP_MSEC
*
(
tp_clk
/
1000
);
writel
(
F_ENABLE_TX_DROP
|
F_ENABLE_TX_ERROR
|
V_DROP_TICKS_CNT
(
drop_ticks
)
|
V_NUM_PKTS_DROPPED
(
DROP_PKTS_CNT
),
ap
->
regs
+
A_TP_TX_DROP_CONFIG
);
}
}
...
...
@@ -61,6 +58,7 @@ void t1_tp_destroy(struct petp *tp)
struct
petp
*
__devinit
t1_tp_create
(
adapter_t
*
adapter
,
struct
tp_params
*
p
)
{
struct
petp
*
tp
=
kzalloc
(
sizeof
(
*
tp
),
GFP_KERNEL
);
if
(
!
tp
)
return
NULL
;
...
...
drivers/net/chelsio/vsc7326.c
View file @
356bd146
...
...
@@ -234,14 +234,14 @@ static void run_table(adapter_t *adapter, struct init_table *ib, int len)
static
int
bist_rd
(
adapter_t
*
adapter
,
int
moduleid
,
int
address
)
{
int
data
=
0
;
u32
result
=
0
;
if
(
(
address
!=
0x0
)
&&
(
address
!=
0x1
)
&&
(
address
!=
0x2
)
&&
(
address
!=
0xd
)
&&
(
address
!=
0xe
))
int
data
=
0
;
u32
result
=
0
;
if
(
(
address
!=
0x0
)
&&
(
address
!=
0x1
)
&&
(
address
!=
0x2
)
&&
(
address
!=
0xd
)
&&
(
address
!=
0xe
))
CH_ERR
(
"No bist address: 0x%x
\n
"
,
address
);
data
=
((
0x00
<<
24
)
|
((
address
&
0xff
)
<<
16
)
|
(
0x00
<<
8
)
|
...
...
@@ -251,9 +251,9 @@ static int bist_rd(adapter_t *adapter, int moduleid, int address)
udelay
(
10
);
vsc_read
(
adapter
,
REG_RAM_BIST_RESULT
,
&
result
);
if
((
result
&
(
1
<<
9
))
!=
0x0
)
if
((
result
&
(
1
<<
9
))
!=
0x0
)
CH_ERR
(
"Still in bist read: 0x%x
\n
"
,
result
);
else
if
((
result
&
(
1
<<
8
))
!=
0x0
)
else
if
((
result
&
(
1
<<
8
))
!=
0x0
)
CH_ERR
(
"bist read error: 0x%x
\n
"
,
result
);
return
(
result
&
0xff
);
...
...
@@ -261,17 +261,17 @@ static int bist_rd(adapter_t *adapter, int moduleid, int address)
static
int
bist_wr
(
adapter_t
*
adapter
,
int
moduleid
,
int
address
,
int
value
)
{
int
data
=
0
;
u32
result
=
0
;
if
(
(
address
!=
0x0
)
&&
(
address
!=
0x1
)
&&
(
address
!=
0x2
)
&&
(
address
!=
0xd
)
&&
(
address
!=
0xe
))
int
data
=
0
;
u32
result
=
0
;
if
(
(
address
!=
0x0
)
&&
(
address
!=
0x1
)
&&
(
address
!=
0x2
)
&&
(
address
!=
0xd
)
&&
(
address
!=
0xe
))
CH_ERR
(
"No bist address: 0x%x
\n
"
,
address
);
if
(
value
>
255
)
if
(
value
>
255
)
CH_ERR
(
"Suspicious write out of range value: 0x%x
\n
"
,
value
);
data
=
((
0x01
<<
24
)
|
((
address
&
0xff
)
<<
16
)
|
(
value
<<
8
)
|
...
...
@@ -281,9 +281,9 @@ static int bist_wr(adapter_t *adapter, int moduleid, int address, int value)
udelay
(
5
);
vsc_read
(
adapter
,
REG_RAM_BIST_CMD
,
&
result
);
if
((
result
&
(
1
<<
27
))
!=
0x0
)
if
((
result
&
(
1
<<
27
))
!=
0x0
)
CH_ERR
(
"Still in bist write: 0x%x
\n
"
,
result
);
else
if
((
result
&
(
1
<<
26
))
!=
0x0
)
else
if
((
result
&
(
1
<<
26
))
!=
0x0
)
CH_ERR
(
"bist write error: 0x%x
\n
"
,
result
);
return
0
;
...
...
@@ -321,15 +321,14 @@ static int enable_mem(adapter_t *adapter, int moduleid)
static
int
run_bist_all
(
adapter_t
*
adapter
)
{
int
port
=
0
;
u32
val
=
0
;
int
port
=
0
;
u32
val
=
0
;
vsc_write
(
adapter
,
REG_MEM_BIST
,
0x5
);
vsc_read
(
adapter
,
REG_MEM_BIST
,
&
val
);
for
(
port
=
0
;
port
<
12
;
port
++
){
for
(
port
=
0
;
port
<
12
;
port
++
)
vsc_write
(
adapter
,
REG_DEV_SETUP
(
port
),
0x0
);
}
udelay
(
300
);
vsc_write
(
adapter
,
REG_SPI4_MISC
,
0x00040409
);
...
...
@@ -352,9 +351,9 @@ static int run_bist_all(adapter_t *adapter)
udelay
(
300
);
vsc_write
(
adapter
,
REG_SPI4_MISC
,
0x60040400
);
udelay
(
300
);
for
(
port
=
0
;
port
<
12
;
port
++
){
for
(
port
=
0
;
port
<
12
;
port
++
)
vsc_write
(
adapter
,
REG_DEV_SETUP
(
port
),
0x1
);
}
udelay
(
300
);
vsc_write
(
adapter
,
REG_MEM_BIST
,
0x0
);
mdelay
(
10
);
...
...
@@ -612,7 +611,7 @@ static void port_stats_update(struct cmac *mac)
rmon_update
(
mac
,
REG_RX_SYMBOL_CARRIER
(
port
),
&
mac
->
stats
.
RxSymbolErrors
);
rmon_update
(
mac
,
REG_RX_SIZE_1519_TO_MAX
(
port
),
&
mac
->
stats
.
RxJumboFramesOK
);
&
mac
->
stats
.
RxJumboFramesOK
);
/* Tx stats (skip collision stats as we are full-duplex only) */
rmon_update
(
mac
,
REG_TX_OK_BYTES
(
port
),
&
mac
->
stats
.
TxOctetsOK
);
...
...
@@ -624,7 +623,7 @@ static void port_stats_update(struct cmac *mac)
rmon_update
(
mac
,
REG_TX_PAUSE
(
port
),
&
mac
->
stats
.
TxPauseFrames
);
rmon_update
(
mac
,
REG_TX_UNDERRUN
(
port
),
&
mac
->
stats
.
TxUnderrun
);
rmon_update
(
mac
,
REG_TX_SIZE_1519_TO_MAX
(
port
),
&
mac
->
stats
.
TxJumboFramesOK
);
&
mac
->
stats
.
TxJumboFramesOK
);
}
/*
...
...
drivers/net/chelsio/vsc8244.c
View file @
356bd146
...
...
@@ -54,7 +54,7 @@ enum {
};
#define CFG_CHG_INTR_MASK (VSC_INTR_LINK_CHG | VSC_INTR_NEG_ERR | \
VSC_INTR_NEG_DONE)
VSC_INTR_NEG_DONE)
#define INTR_MASK (CFG_CHG_INTR_MASK | VSC_INTR_TX_FIFO | VSC_INTR_RX_FIFO | \
VSC_INTR_ENABLE)
...
...
@@ -94,19 +94,18 @@ static int vsc8244_intr_enable(struct cphy *cphy)
{
simple_mdio_write
(
cphy
,
VSC8244_INTR_ENABLE
,
INTR_MASK
);
/* Enable interrupts through Elmer */
/* Enable interrupts through Elmer */
if
(
t1_is_asic
(
cphy
->
adapter
))
{
u32
elmer
;
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
&
elmer
);
elmer
|=
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
if
(
is_T2
(
cphy
->
adapter
))
elmer
|=
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
;
}
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
elmer
);
}
return
0
;
return
0
;
}
static
int
vsc8244_intr_disable
(
struct
cphy
*
cphy
)
...
...
@@ -118,19 +117,18 @@ static int vsc8244_intr_disable(struct cphy *cphy)
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
&
elmer
);
elmer
&=
~
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
if
(
is_T2
(
cphy
->
adapter
))
elmer
&=
~
(
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
);
}
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_ENABLE
,
elmer
);
}
return
0
;
return
0
;
}
static
int
vsc8244_intr_clear
(
struct
cphy
*
cphy
)
{
u32
val
;
u32
elmer
;
u32
elmer
;
/* Clear PHY interrupts by reading the register. */
simple_mdio_read
(
cphy
,
VSC8244_INTR_ENABLE
,
&
val
);
...
...
@@ -138,13 +136,12 @@ static int vsc8244_intr_clear(struct cphy *cphy)
if
(
t1_is_asic
(
cphy
->
adapter
))
{
t1_tpi_read
(
cphy
->
adapter
,
A_ELMER0_INT_CAUSE
,
&
elmer
);
elmer
|=
ELMER0_GP_BIT1
;
if
(
is_T2
(
cphy
->
adapter
))
{
if
(
is_T2
(
cphy
->
adapter
))
elmer
|=
ELMER0_GP_BIT2
|
ELMER0_GP_BIT3
|
ELMER0_GP_BIT4
;
}
t1_tpi_write
(
cphy
->
adapter
,
A_ELMER0_INT_CAUSE
,
elmer
);
}
return
0
;
return
0
;
}
/*
...
...
@@ -179,13 +176,13 @@ static int vsc8244_set_speed_duplex(struct cphy *phy, int speed, int duplex)
int
t1_mdio_set_bits
(
struct
cphy
*
phy
,
int
mmd
,
int
reg
,
unsigned
int
bits
)
{
int
ret
;
unsigned
int
val
;
int
ret
;
unsigned
int
val
;
ret
=
mdio_read
(
phy
,
mmd
,
reg
,
&
val
);
if
(
!
ret
)
ret
=
mdio_write
(
phy
,
mmd
,
reg
,
val
|
bits
);
return
ret
;
ret
=
mdio_read
(
phy
,
mmd
,
reg
,
&
val
);
if
(
!
ret
)
ret
=
mdio_write
(
phy
,
mmd
,
reg
,
val
|
bits
);
return
ret
;
}
static
int
vsc8244_autoneg_enable
(
struct
cphy
*
cphy
)
...
...
@@ -235,7 +232,7 @@ static int vsc8244_advertise(struct cphy *phy, unsigned int advertise_map)
}
static
int
vsc8244_get_link_status
(
struct
cphy
*
cphy
,
int
*
link_ok
,
int
*
speed
,
int
*
duplex
,
int
*
fc
)
int
*
speed
,
int
*
duplex
,
int
*
fc
)
{
unsigned
int
bmcr
,
status
,
lpa
,
adv
;
int
err
,
sp
=
-
1
,
dplx
=
-
1
,
pause
=
0
;
...
...
@@ -343,7 +340,8 @@ static struct cphy_ops vsc8244_ops = {
.
get_link_status
=
vsc8244_get_link_status
};
static
struct
cphy
*
vsc8244_phy_create
(
adapter_t
*
adapter
,
int
phy_addr
,
struct
mdio_ops
*
mdio_ops
)
static
struct
cphy
*
vsc8244_phy_create
(
adapter_t
*
adapter
,
int
phy_addr
,
struct
mdio_ops
*
mdio_ops
)
{
struct
cphy
*
cphy
=
kzalloc
(
sizeof
(
*
cphy
),
GFP_KERNEL
);
...
...
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