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
74e04aca
Commit
74e04aca
authored
May 10, 2012
by
David S. Miller
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master' of
git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/net-next
parents
01da0c2b
eef4560f
Changes
14
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
14 changed files
with
1370 additions
and
245 deletions
+1370
-245
drivers/net/ethernet/intel/Kconfig
drivers/net/ethernet/intel/Kconfig
+11
-0
drivers/net/ethernet/intel/igb/igb_ethtool.c
drivers/net/ethernet/intel/igb/igb_ethtool.c
+37
-1
drivers/net/ethernet/intel/ixgbe/Makefile
drivers/net/ethernet/intel/ixgbe/Makefile
+2
-0
drivers/net/ethernet/intel/ixgbe/ixgbe.h
drivers/net/ethernet/intel/ixgbe/ixgbe.h
+37
-0
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
+1
-1
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c
+31
-38
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c
+45
-48
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c
+38
-60
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+47
-24
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+164
-34
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
+900
-0
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
+9
-4
drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c
drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c
+4
-32
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
+44
-3
No files found.
drivers/net/ethernet/intel/Kconfig
View file @
74e04aca
...
...
@@ -220,6 +220,17 @@ config IXGBE_DCB
If unsure, say N.
config IXGBE_PTP
bool "PTP Clock Support"
default n
depends on IXGBE && PTP_1588_CLOCK
---help---
Say Y here if you want support for 1588 Timestamping with a
PHC device, using the PTP 1588 Clock support. This is
required to enable timestamping support for the device.
If unsure, say N.
config IXGBEVF
tristate "Intel(R) 82599 Virtual Function Ethernet support"
depends on PCI_MSI
...
...
drivers/net/ethernet/intel/igb/igb_ethtool.c
View file @
74e04aca
...
...
@@ -335,7 +335,7 @@ static void igb_set_msglevel(struct net_device *netdev, u32 data)
static
int
igb_get_regs_len
(
struct
net_device
*
netdev
)
{
#define IGB_REGS_LEN
551
#define IGB_REGS_LEN
739
return
IGB_REGS_LEN
*
sizeof
(
u32
);
}
...
...
@@ -556,6 +556,42 @@ static void igb_get_regs(struct net_device *netdev,
regs_buff
[
552
]
=
adapter
->
stats
.
b2ospc
;
regs_buff
[
553
]
=
adapter
->
stats
.
o2bspc
;
regs_buff
[
554
]
=
adapter
->
stats
.
b2ogprc
;
if
(
hw
->
mac
.
type
!=
e1000_82576
)
return
;
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
555
+
i
]
=
rd32
(
E1000_SRRCTL
(
i
+
4
));
for
(
i
=
0
;
i
<
4
;
i
++
)
regs_buff
[
567
+
i
]
=
rd32
(
E1000_PSRTYPE
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
571
+
i
]
=
rd32
(
E1000_RDBAL
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
583
+
i
]
=
rd32
(
E1000_RDBAH
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
595
+
i
]
=
rd32
(
E1000_RDLEN
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
607
+
i
]
=
rd32
(
E1000_RDH
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
619
+
i
]
=
rd32
(
E1000_RDT
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
631
+
i
]
=
rd32
(
E1000_RXDCTL
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
643
+
i
]
=
rd32
(
E1000_TDBAL
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
655
+
i
]
=
rd32
(
E1000_TDBAH
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
667
+
i
]
=
rd32
(
E1000_TDLEN
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
679
+
i
]
=
rd32
(
E1000_TDH
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
691
+
i
]
=
rd32
(
E1000_TDT
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
703
+
i
]
=
rd32
(
E1000_TXDCTL
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
715
+
i
]
=
rd32
(
E1000_TDWBAL
(
i
+
4
));
for
(
i
=
0
;
i
<
12
;
i
++
)
regs_buff
[
727
+
i
]
=
rd32
(
E1000_TDWBAH
(
i
+
4
));
}
static
int
igb_get_eeprom_len
(
struct
net_device
*
netdev
)
...
...
drivers/net/ethernet/intel/ixgbe/Makefile
View file @
74e04aca
...
...
@@ -39,4 +39,6 @@ ixgbe-objs := ixgbe_main.o ixgbe_common.o ixgbe_ethtool.o \
ixgbe-$(CONFIG_IXGBE_DCB)
+=
ixgbe_dcb.o ixgbe_dcb_82598.o
\
ixgbe_dcb_82599.o ixgbe_dcb_nl.o
ixgbe-$(CONFIG_IXGBE_PTP)
+=
ixgbe_ptp.o
ixgbe-$(CONFIG_FCOE
:
m=y) += ixgbe_fcoe.o
drivers/net/ethernet/intel/ixgbe/ixgbe.h
View file @
74e04aca
...
...
@@ -36,6 +36,12 @@
#include <linux/aer.h>
#include <linux/if_vlan.h>
#ifdef CONFIG_IXGBE_PTP
#include <linux/clocksource.h>
#include <linux/net_tstamp.h>
#include <linux/ptp_clock_kernel.h>
#endif
/* CONFIG_IXGBE_PTP */
#include "ixgbe_type.h"
#include "ixgbe_common.h"
#include "ixgbe_dcb.h"
...
...
@@ -96,6 +102,7 @@
#define IXGBE_TX_FLAGS_FCOE (u32)(1 << 5)
#define IXGBE_TX_FLAGS_FSO (u32)(1 << 6)
#define IXGBE_TX_FLAGS_TXSW (u32)(1 << 7)
#define IXGBE_TX_FLAGS_TSTAMP (u32)(1 << 8)
#define IXGBE_TX_FLAGS_VLAN_MASK 0xffff0000
#define IXGBE_TX_FLAGS_VLAN_PRIO_MASK 0xe0000000
#define IXGBE_TX_FLAGS_VLAN_PRIO_SHIFT 29
...
...
@@ -458,6 +465,8 @@ struct ixgbe_adapter {
#define IXGBE_FLAG2_FDIR_REQUIRES_REINIT (u32)(1 << 7)
#define IXGBE_FLAG2_RSS_FIELD_IPV4_UDP (u32)(1 << 8)
#define IXGBE_FLAG2_RSS_FIELD_IPV6_UDP (u32)(1 << 9)
#define IXGBE_FLAG2_OVERFLOW_CHECK_ENABLED (u32)(1 << 10)
#define IXGBE_FLAG2_PTP_PPS_ENABLED (u32)(1 << 11)
/* Tx fast path data */
int
num_tx_queues
;
...
...
@@ -545,6 +554,17 @@ struct ixgbe_adapter {
u32
interrupt_event
;
u32
led_reg
;
#ifdef CONFIG_IXGBE_PTP
struct
ptp_clock
*
ptp_clock
;
struct
ptp_clock_info
ptp_caps
;
unsigned
long
last_overflow_check
;
spinlock_t
tmreg_lock
;
struct
cyclecounter
cc
;
struct
timecounter
tc
;
u32
base_incval
;
u32
cycle_speed
;
#endif
/* CONFIG_IXGBE_PTP */
/* SR-IOV */
DECLARE_BITMAP
(
active_vfs
,
IXGBE_MAX_VF_FUNCTIONS
);
unsigned
int
num_vfs
;
...
...
@@ -652,12 +672,15 @@ extern void ixgbe_atr_compute_perfect_hash_82599(union ixgbe_atr_input *input,
union
ixgbe_atr_input
*
mask
);
extern
void
ixgbe_set_rx_mode
(
struct
net_device
*
netdev
);
#ifdef CONFIG_IXGBE_DCB
extern
void
ixgbe_set_rx_drop_en
(
struct
ixgbe_adapter
*
adapter
);
extern
int
ixgbe_setup_tc
(
struct
net_device
*
dev
,
u8
tc
);
#endif
extern
void
ixgbe_tx_ctxtdesc
(
struct
ixgbe_ring
*
,
u32
,
u32
,
u32
,
u32
);
extern
void
ixgbe_do_reset
(
struct
net_device
*
netdev
);
#ifdef CONFIG_IXGBE_HWMON
extern
void
ixgbe_sysfs_exit
(
struct
ixgbe_adapter
*
adapter
);
extern
int
ixgbe_sysfs_init
(
struct
ixgbe_adapter
*
adapter
);
#endif
/* CONFIG_IXGBE_HWMON */
#ifdef IXGBE_FCOE
extern
void
ixgbe_configure_fcoe
(
struct
ixgbe_adapter
*
adapter
);
extern
int
ixgbe_fso
(
struct
ixgbe_ring
*
tx_ring
,
...
...
@@ -688,4 +711,18 @@ static inline struct netdev_queue *txring_txq(const struct ixgbe_ring *ring)
return
netdev_get_tx_queue
(
ring
->
netdev
,
ring
->
queue_index
);
}
#ifdef CONFIG_IXGBE_PTP
extern
void
ixgbe_ptp_init
(
struct
ixgbe_adapter
*
adapter
);
extern
void
ixgbe_ptp_stop
(
struct
ixgbe_adapter
*
adapter
);
extern
void
ixgbe_ptp_overflow_check
(
struct
ixgbe_adapter
*
adapter
);
extern
void
ixgbe_ptp_tx_hwtstamp
(
struct
ixgbe_q_vector
*
q_vector
,
struct
sk_buff
*
skb
);
extern
void
ixgbe_ptp_rx_hwtstamp
(
struct
ixgbe_q_vector
*
q_vector
,
struct
sk_buff
*
skb
);
extern
int
ixgbe_ptp_hwtstamp_ioctl
(
struct
ixgbe_adapter
*
adapter
,
struct
ifreq
*
ifr
,
int
cmd
);
extern
void
ixgbe_ptp_start_cyclecounter
(
struct
ixgbe_adapter
*
adapter
);
extern
void
ixgbe_ptp_check_pps_event
(
struct
ixgbe_adapter
*
adapter
,
u32
eicr
);
#endif
/* CONFIG_IXGBE_PTP */
#endif
/* _IXGBE_H_ */
drivers/net/ethernet/intel/ixgbe/ixgbe_common.c
View file @
74e04aca
...
...
@@ -2561,7 +2561,7 @@ s32 ixgbe_disable_rx_buff_generic(struct ixgbe_hw *hw)
break
;
else
/* Use interrupt-safe sleep just in case */
udelay
(
10
);
udelay
(
10
00
);
}
/* For informational purposes only */
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82598.c
View file @
74e04aca
...
...
@@ -191,53 +191,46 @@ s32 ixgbe_dcb_config_tx_data_arbiter_82598(struct ixgbe_hw *hw,
*/
s32
ixgbe_dcb_config_pfc_82598
(
struct
ixgbe_hw
*
hw
,
u8
pfc_en
)
{
u32
reg
;
u32
fcrtl
,
reg
;
u8
i
;
if
(
pfc_en
)
{
/* Enable Transmit Priority Flow Control */
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_RMCS
);
reg
&=
~
IXGBE_RMCS_TFCE_802_3X
;
/* correct the reporting of our flow control status */
reg
|=
IXGBE_RMCS_TFCE_PRIORITY
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_RMCS
,
reg
);
/* Enable Receive Priority Flow Control */
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_FCTRL
);
reg
&=
~
IXGBE_FCTRL_RFCE
;
reg
|=
IXGBE_FCTRL_RPFCE
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTRL
,
reg
);
/* Configure pause time */
for
(
i
=
0
;
i
<
(
MAX_TRAFFIC_CLASS
>>
1
);
i
++
)
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTTV
(
i
),
0x68006800
);
/* Enable Transmit Priority Flow Control */
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_RMCS
);
reg
&=
~
IXGBE_RMCS_TFCE_802_3X
;
reg
|=
IXGBE_RMCS_TFCE_PRIORITY
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_RMCS
,
reg
);
/* Configure flow control refresh threshold value
*/
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTV
,
0x3400
);
}
/* Enable Receive Priority Flow Control
*/
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_FCTRL
);
reg
&=
~
(
IXGBE_FCTRL_RPFCE
|
IXGBE_FCTRL_RFCE
);
/*
* Configure flow control thresholds and enable priority flow control
* for each traffic class.
*/
for
(
i
=
0
;
i
<
MAX_TRAFFIC_CLASS
;
i
++
)
{
int
enabled
=
pfc_en
&
(
1
<<
i
);
if
(
pfc_en
)
reg
|=
IXGBE_FCTRL_RPFCE
;
reg
=
hw
->
fc
.
low_water
<<
10
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTRL
,
reg
)
;
if
(
enabled
==
pfc_enabled_tx
||
enabled
==
pfc_enabled_full
)
reg
|=
IXGBE_FCRTL_XONE
;
fcrtl
=
(
hw
->
fc
.
low_water
<<
10
)
|
IXGBE_FCRTL_XONE
;
/* Configure PFC Tx thresholds per TC */
for
(
i
=
0
;
i
<
MAX_TRAFFIC_CLASS
;
i
++
)
{
if
(
!
(
pfc_en
&
(
1
<<
i
)))
{
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL
(
i
),
0
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH
(
i
),
0
);
continue
;
}
reg
=
(
hw
->
fc
.
high_water
[
i
]
<<
10
)
|
IXGBE_FCRTH_FCEN
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL
(
i
),
fcrtl
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH
(
i
),
reg
);
}
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL
(
i
),
reg
);
/* Configure pause time */
reg
=
hw
->
fc
.
pause_time
*
0x00010001
;
for
(
i
=
0
;
i
<
(
MAX_TRAFFIC_CLASS
/
2
);
i
++
)
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTTV
(
i
),
reg
);
reg
=
hw
->
fc
.
high_water
[
i
]
<<
10
;
if
(
enabled
==
pfc_enabled_tx
||
enabled
==
pfc_enabled_full
)
reg
|=
IXGBE_FCRTH_FCEN
;
/* Configure flow control refresh threshold value */
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTV
,
hw
->
fc
.
pause_time
/
2
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH
(
i
),
reg
);
}
return
0
;
}
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_82599.c
View file @
74e04aca
...
...
@@ -211,24 +211,42 @@ s32 ixgbe_dcb_config_tx_data_arbiter_82599(struct ixgbe_hw *hw,
*/
s32
ixgbe_dcb_config_pfc_82599
(
struct
ixgbe_hw
*
hw
,
u8
pfc_en
,
u8
*
prio_tc
)
{
u32
i
,
j
,
reg
;
u32
i
,
j
,
fcrtl
,
reg
;
u8
max_tc
=
0
;
for
(
i
=
0
;
i
<
MAX_USER_PRIORITY
;
i
++
)
/* Enable Transmit Priority Flow Control */
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCCFG
,
IXGBE_FCCFG_TFCE_PRIORITY
);
/* Enable Receive Priority Flow Control */
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_MFLCN
);
reg
|=
IXGBE_MFLCN_DPF
;
/*
* X540 supports per TC Rx priority flow control. So
* clear all TCs and only enable those that should be
* enabled.
*/
reg
&=
~
(
IXGBE_MFLCN_RPFCE_MASK
|
IXGBE_MFLCN_RFCE
);
if
(
hw
->
mac
.
type
==
ixgbe_mac_X540
)
reg
|=
pfc_en
<<
IXGBE_MFLCN_RPFCE_SHIFT
;
if
(
pfc_en
)
reg
|=
IXGBE_MFLCN_RPFCE
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_MFLCN
,
reg
);
for
(
i
=
0
;
i
<
MAX_USER_PRIORITY
;
i
++
)
{
if
(
prio_tc
[
i
]
>
max_tc
)
max_tc
=
prio_tc
[
i
];
}
fcrtl
=
(
hw
->
fc
.
low_water
<<
10
)
|
IXGBE_FCRTL_XONE
;
/* Configure PFC Tx thresholds per TC */
for
(
i
=
0
;
i
<
MAX_TRAFFIC_CLASS
;
i
++
)
{
for
(
i
=
0
;
i
<
=
max_tc
;
i
++
)
{
int
enabled
=
0
;
if
(
i
>
max_tc
)
{
reg
=
0
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL_82599
(
i
),
reg
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH_82599
(
i
),
reg
);
continue
;
}
for
(
j
=
0
;
j
<
MAX_USER_PRIORITY
;
j
++
)
{
if
((
prio_tc
[
j
]
==
i
)
&&
(
pfc_en
&
(
1
<<
j
)))
{
enabled
=
1
;
...
...
@@ -236,50 +254,29 @@ s32 ixgbe_dcb_config_pfc_82599(struct ixgbe_hw *hw, u8 pfc_en, u8 *prio_tc)
}
}
reg
=
hw
->
fc
.
low_water
<<
10
;
if
(
enabled
)
reg
|=
IXGBE_FCRTL_XONE
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL_82599
(
i
),
reg
);
if
(
enabled
)
{
reg
=
(
hw
->
fc
.
high_water
[
i
]
<<
10
)
|
IXGBE_FCRTH_FCEN
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL_82599
(
i
),
fcrtl
);
}
else
{
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_RXPBSIZE
(
i
))
-
32
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL_82599
(
i
),
0
);
}
reg
=
hw
->
fc
.
high_water
[
i
]
<<
10
;
if
(
enabled
)
reg
|=
IXGBE_FCRTH_FCEN
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH_82599
(
i
),
reg
);
}
if
(
pfc_en
)
{
/* Configure pause time (2 TCs per register) */
reg
=
hw
->
fc
.
pause_time
|
(
hw
->
fc
.
pause_time
<<
16
);
for
(
i
=
0
;
i
<
(
MAX_TRAFFIC_CLASS
/
2
);
i
++
)
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTTV
(
i
),
reg
);
/* Configure flow control refresh threshold value */
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTV
,
hw
->
fc
.
pause_time
/
2
);
reg
=
IXGBE_FCCFG_TFCE_PRIORITY
;
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCCFG
,
reg
);
/*
* Enable Receive PFC
* 82599 will always honor XOFF frames we receive when
* we are in PFC mode however X540 only honors enabled
* traffic classes.
*/
reg
=
IXGBE_READ_REG
(
hw
,
IXGBE_MFLCN
);
reg
&=
~
IXGBE_MFLCN_RFCE
;
reg
|=
IXGBE_MFLCN_RPFCE
|
IXGBE_MFLCN_DPF
;
if
(
hw
->
mac
.
type
==
ixgbe_mac_X540
)
{
reg
&=
~
IXGBE_MFLCN_RPFCE_MASK
;
reg
|=
pfc_en
<<
IXGBE_MFLCN_RPFCE_SHIFT
;
}
for
(;
i
<
MAX_TRAFFIC_CLASS
;
i
++
)
{
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTL_82599
(
i
),
0
);
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTH_82599
(
i
),
0
);
}
IXGBE_WRITE_REG
(
hw
,
IXGBE_MFLCN
,
reg
);
/* Configure pause time (2 TCs per register) */
reg
=
hw
->
fc
.
pause_time
*
0x00010001
;
for
(
i
=
0
;
i
<
(
MAX_TRAFFIC_CLASS
/
2
);
i
++
)
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCTTV
(
i
),
reg
);
}
else
{
hw
->
mac
.
ops
.
fc_enable
(
hw
);
}
/* Configure flow control refresh threshold value */
IXGBE_WRITE_REG
(
hw
,
IXGBE_FCRTV
,
hw
->
fc
.
pause_time
/
2
);
return
0
;
}
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c
View file @
74e04aca
...
...
@@ -338,6 +338,8 @@ static void ixgbe_dcbnl_devreset(struct net_device *dev)
static
u8
ixgbe_dcbnl_set_all
(
struct
net_device
*
netdev
)
{
struct
ixgbe_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
ixgbe_dcb_config
*
dcb_cfg
=
&
adapter
->
dcb_cfg
;
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
int
ret
=
DCB_NO_HW_CHG
;
int
i
;
...
...
@@ -350,32 +352,6 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
if
(
!
adapter
->
dcb_set_bitmap
)
return
ret
;
if
(
adapter
->
dcb_cfg
.
pfc_mode_enable
)
{
switch
(
adapter
->
hw
.
mac
.
type
)
{
case
ixgbe_mac_82599EB
:
case
ixgbe_mac_X540
:
if
(
adapter
->
hw
.
fc
.
current_mode
!=
ixgbe_fc_pfc
)
adapter
->
last_lfc_mode
=
adapter
->
hw
.
fc
.
current_mode
;
break
;
default:
break
;
}
adapter
->
hw
.
fc
.
requested_mode
=
ixgbe_fc_pfc
;
}
else
{
switch
(
adapter
->
hw
.
mac
.
type
)
{
case
ixgbe_mac_82598EB
:
adapter
->
hw
.
fc
.
requested_mode
=
ixgbe_fc_none
;
break
;
case
ixgbe_mac_82599EB
:
case
ixgbe_mac_X540
:
adapter
->
hw
.
fc
.
requested_mode
=
adapter
->
last_lfc_mode
;
break
;
default:
break
;
}
}
if
(
adapter
->
dcb_set_bitmap
&
(
BIT_PG_TX
|
BIT_PG_RX
))
{
u16
refill
[
MAX_TRAFFIC_CLASS
],
max
[
MAX_TRAFFIC_CLASS
];
u8
bwg_id
[
MAX_TRAFFIC_CLASS
],
prio_type
[
MAX_TRAFFIC_CLASS
];
...
...
@@ -388,23 +364,19 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
max_frame
=
max
(
max_frame
,
IXGBE_FCOE_JUMBO_FRAME_SIZE
);
#endif
ixgbe_dcb_calculate_tc_credits
(
&
adapter
->
hw
,
&
adapter
->
dcb_cfg
,
max_frame
,
DCB_TX_CONFIG
);
ixgbe_dcb_calculate_tc_credits
(
&
adapter
->
hw
,
&
adapter
->
dcb_cfg
,
max_frame
,
DCB_RX_CONFIG
);
ixgbe_dcb_calculate_tc_credits
(
hw
,
dcb_cfg
,
max_frame
,
DCB_TX_CONFIG
);
ixgbe_dcb_calculate_tc_credits
(
hw
,
dcb_cfg
,
max_frame
,
DCB_RX_CONFIG
);
ixgbe_dcb_unpack_refill
(
&
adapter
->
dcb_cfg
,
DCB_TX_CONFIG
,
refill
);
ixgbe_dcb_unpack_max
(
&
adapter
->
dcb_cfg
,
max
);
ixgbe_dcb_unpack_bwgid
(
&
adapter
->
dcb_cfg
,
DCB_TX_CONFIG
,
bwg_id
);
ixgbe_dcb_unpack_prio
(
&
adapter
->
dcb_cfg
,
DCB_TX_CONFIG
,
prio_type
);
ixgbe_dcb_unpack_map
(
&
adapter
->
dcb_cfg
,
DCB_TX_CONFIG
,
prio_tc
);
ixgbe_dcb_unpack_refill
(
dcb_cfg
,
DCB_TX_CONFIG
,
refill
);
ixgbe_dcb_unpack_max
(
dcb_cfg
,
max
);
ixgbe_dcb_unpack_bwgid
(
dcb_cfg
,
DCB_TX_CONFIG
,
bwg_id
);
ixgbe_dcb_unpack_prio
(
dcb_cfg
,
DCB_TX_CONFIG
,
prio_type
);
ixgbe_dcb_unpack_map
(
dcb_cfg
,
DCB_TX_CONFIG
,
prio_tc
);
ixgbe_dcb_hw_ets_config
(
&
adapter
->
hw
,
refill
,
max
,
bwg_id
,
prio_type
,
prio_tc
);
ixgbe_dcb_hw_ets_config
(
hw
,
refill
,
max
,
bwg_id
,
prio_type
,
prio_tc
);
for
(
i
=
0
;
i
<
IEEE_8021QAZ_MAX_TCS
;
i
++
)
netdev_set_prio_tc_map
(
netdev
,
i
,
prio_tc
[
i
]);
...
...
@@ -413,19 +385,21 @@ static u8 ixgbe_dcbnl_set_all(struct net_device *netdev)
}
if
(
adapter
->
dcb_set_bitmap
&
BIT_PFC
)
{
u8
pfc_en
;
u8
prio_tc
[
MAX_USER_PRIORITY
];
if
(
dcb_cfg
->
pfc_mode_enable
)
{
u8
pfc_en
;
u8
prio_tc
[
MAX_USER_PRIORITY
];
ixgbe_dcb_unpack_map
(
dcb_cfg
,
DCB_TX_CONFIG
,
prio_tc
);
ixgbe_dcb_unpack_pfc
(
dcb_cfg
,
&
pfc_en
);
ixgbe_dcb_hw_pfc_config
(
hw
,
pfc_en
,
prio_tc
);
}
else
{
hw
->
mac
.
ops
.
fc_enable
(
hw
);
}
ixgbe_dcb_unpack_map
(
&
adapter
->
dcb_cfg
,
DCB_TX_CONFIG
,
prio_tc
);
ixgbe_dcb_unpack_pfc
(
&
adapter
->
dcb_cfg
,
&
pfc_en
);
ixgbe_dcb_hw_pfc_config
(
&
adapter
->
hw
,
pfc_en
,
prio_tc
);
if
(
ret
!=
DCB_HW_CHG_RST
)
ret
=
DCB_HW_CHG
;
}
ixgbe_set_rx_drop_en
(
adapter
);
if
(
adapter
->
dcb_cfg
.
pfc_mode_enable
)
adapter
->
hw
.
fc
.
current_mode
=
ixgbe_fc_pfc
;
ret
=
DCB_HW_CHG
;
}
#ifdef IXGBE_FCOE
/* Reprogam FCoE hardware offloads when the traffic class
...
...
@@ -647,7 +621,9 @@ static int ixgbe_dcbnl_ieee_setpfc(struct net_device *dev,
struct
ieee_pfc
*
pfc
)
{
struct
ixgbe_adapter
*
adapter
=
netdev_priv
(
dev
);
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
u8
*
prio_tc
;
int
err
;
if
(
!
(
adapter
->
dcbx_cap
&
DCB_CAP_DCBX_VER_IEEE
))
return
-
EINVAL
;
...
...
@@ -659,16 +635,18 @@ static int ixgbe_dcbnl_ieee_setpfc(struct net_device *dev,
return
-
ENOMEM
;
}
if
(
pfc
->
pfc_en
)
{
adapter
->
last_lfc_mode
=
adapter
->
hw
.
fc
.
current_mode
;
adapter
->
hw
.
fc
.
current_mode
=
ixgbe_fc_pfc
;
}
else
{
adapter
->
hw
.
fc
.
current_mode
=
adapter
->
last_lfc_mode
;
}
prio_tc
=
adapter
->
ixgbe_ieee_ets
->
prio_tc
;
memcpy
(
adapter
->
ixgbe_ieee_pfc
,
pfc
,
sizeof
(
*
adapter
->
ixgbe_ieee_pfc
));
return
ixgbe_dcb_hw_pfc_config
(
&
adapter
->
hw
,
pfc
->
pfc_en
,
prio_tc
);
/* Enable link flow control parameters if PFC is disabled */
if
(
pfc
->
pfc_en
)
err
=
ixgbe_dcb_hw_pfc_config
(
hw
,
pfc
->
pfc_en
,
prio_tc
);
else
err
=
hw
->
mac
.
ops
.
fc_enable
(
hw
);
ixgbe_set_rx_drop_en
(
adapter
);
return
err
;
}
static
int
ixgbe_dcbnl_ieee_setapp
(
struct
net_device
*
dev
,
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
View file @
74e04aca
...
...
@@ -391,11 +391,6 @@ static void ixgbe_get_pauseparam(struct net_device *netdev,
}
else
if
(
hw
->
fc
.
current_mode
==
ixgbe_fc_full
)
{
pause
->
rx_pause
=
1
;
pause
->
tx_pause
=
1
;
#ifdef CONFIG_DCB
}
else
if
(
hw
->
fc
.
current_mode
==
ixgbe_fc_pfc
)
{
pause
->
rx_pause
=
0
;
pause
->
tx_pause
=
0
;
#endif
}
}
...
...
@@ -404,21 +399,14 @@ static int ixgbe_set_pauseparam(struct net_device *netdev,
{
struct
ixgbe_adapter
*
adapter
=
netdev_priv
(
netdev
);
struct
ixgbe_hw
*
hw
=
&
adapter
->
hw
;
struct
ixgbe_fc_info
fc
;
struct
ixgbe_fc_info
fc
=
hw
->
fc
;
#ifdef CONFIG_DCB
if
(
adapter
->
dcb_cfg
.
pfc_mode_enable
||
((
hw
->
mac
.
type
==
ixgbe_mac_82598EB
)
&&
(
adapter
->
flags
&
IXGBE_FLAG_DCB_ENABLED
)))
/* 82598 does no support link flow control with DCB enabled */
if
((
hw
->
mac
.
type
==
ixgbe_mac_82598EB
)
&&
(
adapter
->
flags
&
IXGBE_FLAG_DCB_ENABLED
))
return
-
EINVAL
;
#endif
fc
=
hw
->
fc
;
if
(
pause
->
autoneg
!=
AUTONEG_ENABLE
)
fc
.
disable_fc_autoneg
=
true
;
else
fc
.
disable_fc_autoneg
=
false
;
fc
.
disable_fc_autoneg
=
(
pause
->
autoneg
!=
AUTONEG_ENABLE
);
if
((
pause
->
rx_pause
&&
pause
->
tx_pause
)
||
pause
->
autoneg
)
fc
.
requested_mode
=
ixgbe_fc_full
;
...
...
@@ -426,14 +414,8 @@ static int ixgbe_set_pauseparam(struct net_device *netdev,
fc
.
requested_mode
=
ixgbe_fc_rx_pause
;
else
if
(
!
pause
->
rx_pause
&&
pause
->
tx_pause
)
fc
.
requested_mode
=
ixgbe_fc_tx_pause
;
else
if
(
!
pause
->
rx_pause
&&
!
pause
->
tx_pause
)
fc
.
requested_mode
=
ixgbe_fc_none
;
else
return
-
EINVAL
;
#ifdef CONFIG_DCB
adapter
->
last_lfc_mode
=
fc
.
requested_mode
;
#endif
fc
.
requested_mode
=
ixgbe_fc_none
;
/* if the thing changed then we'll update and use new autoneg */
if
(
memcmp
(
&
fc
,
&
hw
->
fc
,
sizeof
(
struct
ixgbe_fc_info
)))
{
...
...
@@ -2714,6 +2696,46 @@ static int ixgbe_set_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
return
ret
;
}
static
int
ixgbe_get_ts_info
(
struct
net_device
*
dev
,
struct
ethtool_ts_info
*
info
)
{
struct
ixgbe_adapter
*
adapter
=
netdev_priv
(
dev
);
switch
(
adapter
->
hw
.
mac
.
type
)
{
#ifdef CONFIG_IXGBE_PTP
case
ixgbe_mac_X540
:
case
ixgbe_mac_82599EB
:
info
->
so_timestamping
=
SOF_TIMESTAMPING_TX_HARDWARE
|
SOF_TIMESTAMPING_RX_HARDWARE
|
SOF_TIMESTAMPING_RAW_HARDWARE
;
if
(
adapter
->
ptp_clock
)
info
->
phc_index
=
ptp_clock_index
(
adapter
->
ptp_clock
);
else
info
->
phc_index
=
-
1
;
info
->
tx_types
=
(
1
<<
HWTSTAMP_TX_OFF
)
|
(
1
<<
HWTSTAMP_TX_ON
);
info
->
rx_filters
=
(
1
<<
HWTSTAMP_FILTER_NONE
)
|
(
1
<<
HWTSTAMP_FILTER_PTP_V1_L4_SYNC
)
|
(
1
<<
HWTSTAMP_FILTER_PTP_V1_L4_DELAY_REQ
)
|
(
1
<<
HWTSTAMP_FILTER_PTP_V2_SYNC
)
|
(
1
<<
HWTSTAMP_FILTER_PTP_V2_DELAY_REQ
)
|
(
1
<<
HWTSTAMP_FILTER_PTP_V2_EVENT
)
|
(
1
<<
HWTSTAMP_FILTER_SOME
);
break
;
#endif
/* CONFIG_IXGBE_PTP */
default:
return
ethtool_op_get_ts_info
(
dev
,
info
);
break
;
}
return
0
;
}
static
const
struct
ethtool_ops
ixgbe_ethtool_ops
=
{
.
get_settings
=
ixgbe_get_settings
,
.
set_settings
=
ixgbe_set_settings
,
...
...
@@ -2742,6 +2764,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
.
set_coalesce
=
ixgbe_set_coalesce
,
.
get_rxnfc
=
ixgbe_get_rxnfc
,
.
set_rxnfc
=
ixgbe_set_rxnfc
,
.
get_ts_info
=
ixgbe_get_ts_info
,
};
void
ixgbe_set_ethtool_ops
(
struct
net_device
*
netdev
)
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
View file @
74e04aca
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/intel/ixgbe/ixgbe_ptp.c
0 → 100644
View file @
74e04aca
This diff is collapsed.
Click to expand it.
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c
View file @
74e04aca
...
...
@@ -544,13 +544,18 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
retval
=
ixgbe_read_mbx
(
hw
,
msgbuf
,
mbx_size
,
vf
);
if
(
retval
)
if
(
retval
)
{
pr_err
(
"Error receiving message from VF
\n
"
);
return
retval
;
}
/* this is a message we already processed, do nothing */
if
(
msgbuf
[
0
]
&
(
IXGBE_VT_MSGTYPE_ACK
|
IXGBE_VT_MSGTYPE_NACK
))
return
retval
;
/* flush the ack before we write any messages back */
IXGBE_WRITE_FLUSH
(
hw
);
/*
* until the vf completes a virtual function reset it should not be
* allowed to start any configuration.
...
...
@@ -635,14 +640,14 @@ static int ixgbe_rcv_msg_from_vf(struct ixgbe_adapter *adapter, u32 vf)
}
break
;
case
IXGBE_VF_SET_MACVLAN
:
if
(
adapter
->
vfinfo
[
vf
].
pf_set_mac
)
{
index
=
(
msgbuf
[
0
]
&
IXGBE_VT_MSGINFO_MASK
)
>>
IXGBE_VT_MSGINFO_SHIFT
;
if
(
adapter
->
vfinfo
[
vf
].
pf_set_mac
&&
index
>
0
)
{
e_warn
(
drv
,
"VF %d requested MACVLAN filter but is "
"administratively denied
\n
"
,
vf
);
retval
=
-
1
;
break
;
}
index
=
(
msgbuf
[
0
]
&
IXGBE_VT_MSGINFO_MASK
)
>>
IXGBE_VT_MSGINFO_SHIFT
;
/*
* If the VF is allowed to set MAC filters then turn off
* anti-spoofing to avoid false positives. An index
...
...
drivers/net/ethernet/intel/ixgbe/ixgbe_sysfs.c
View file @
74e04aca
...
...
@@ -37,12 +37,7 @@
#include <linux/netdevice.h>
#include <linux/hwmon.h>
/*
* This file provides a sysfs interface to export information from the
* driver. The information presented is READ-ONLY.
*/
#ifdef CONFIG_IXGBE_HWMON
/* hwmon callback functions */
static
ssize_t
ixgbe_hwmon_show_location
(
struct
device
*
dev
,
struct
device_attribute
*
attr
,
...
...
@@ -162,17 +157,13 @@ static int ixgbe_add_hwmon_attr(struct ixgbe_adapter *adapter,
return
rc
;
}
#endif
/* CONFIG_IXGBE_HWMON */
static
void
ixgbe_sysfs_del_adapter
(
struct
ixgbe_adapter
*
adapter
)
{
#ifdef CONFIG_IXGBE_HWMON
int
i
;
#endif
/* CONFIG_IXGBE_HWMON */
if
(
adapter
==
NULL
)
return
;
#ifdef CONFIG_IXGBE_HWMON
for
(
i
=
0
;
i
<
adapter
->
ixgbe_hwmon_buff
.
n_hwmon
;
i
++
)
{
device_remove_file
(
&
adapter
->
pdev
->
dev
,
...
...
@@ -183,12 +174,6 @@ static void ixgbe_sysfs_del_adapter(struct ixgbe_adapter *adapter)
if
(
adapter
->
ixgbe_hwmon_buff
.
device
)
hwmon_device_unregister
(
adapter
->
ixgbe_hwmon_buff
.
device
);
#endif
/* CONFIG_IXGBE_HWMON */
if
(
adapter
->
info_kobj
!=
NULL
)
{
kobject_put
(
adapter
->
info_kobj
);
adapter
->
info_kobj
=
NULL
;
}
}
/* called from ixgbe_main.c */
...
...
@@ -200,32 +185,19 @@ void ixgbe_sysfs_exit(struct ixgbe_adapter *adapter)
/* called from ixgbe_main.c */
int
ixgbe_sysfs_init
(
struct
ixgbe_adapter
*
adapter
)
{
#ifdef CONFIG_IXGBE_HWMON
struct
hwmon_buff
*
ixgbe_hwmon
=
&
adapter
->
ixgbe_hwmon_buff
;
unsigned
int
i
;
int
n_attrs
;
#endif
/* CONFIG_IXGBE_HWMON */
struct
net_device
*
netdev
=
adapter
->
netdev
;
int
rc
=
0
;
/* create info kobj and attribute listings in kobj */
adapter
->
info_kobj
=
kobject_create_and_add
(
"info"
,
&
netdev
->
dev
.
kobj
);
if
(
adapter
->
info_kobj
==
NULL
)
{
rc
=
-
ENOMEM
;
goto
err
;
}
#ifdef CONFIG_IXGBE_HWMON
/* If this method isn't defined we don't support thermals */
if
(
adapter
->
hw
.
mac
.
ops
.
init_thermal_sensor_thresh
==
NULL
)
{
rc
=
-
EPERM
;
goto
err
;
goto
exit
;
}
/* Don't create thermal hwmon interface if no sensors present */
rc
=
adapter
->
hw
.
mac
.
ops
.
init_thermal_sensor_thresh
(
&
adapter
->
hw
);
if
(
rc
)
goto
err
;
if
(
adapter
->
hw
.
mac
.
ops
.
init_thermal_sensor_thresh
(
&
adapter
->
hw
))
goto
exit
;
/*
* Allocation space for max attributs
...
...
@@ -261,7 +233,6 @@ int ixgbe_sysfs_init(struct ixgbe_adapter *adapter)
if
(
rc
)
goto
err
;
}
#endif
/* CONFIG_IXGBE_HWMON */
goto
exit
;
...
...
@@ -270,4 +241,5 @@ int ixgbe_sysfs_init(struct ixgbe_adapter *adapter)
exit:
return
rc
;
}
#endif
/* CONFIG_IXGBE_HWMON */
drivers/net/ethernet/intel/ixgbe/ixgbe_type.h
View file @
74e04aca
...
...
@@ -824,6 +824,8 @@ struct ixgbe_thermal_sensor_data {
#define IXGBE_TRGTTIMH0 0x08C28
/* Target Time Register 0 High - RW */
#define IXGBE_TRGTTIML1 0x08C2C
/* Target Time Register 1 Low - RW */
#define IXGBE_TRGTTIMH1 0x08C30
/* Target Time Register 1 High - RW */
#define IXGBE_CLKTIML 0x08C34
/* Clock Out Time Register Low - RW */
#define IXGBE_CLKTIMH 0x08C38
/* Clock Out Time Register High - RW */
#define IXGBE_FREQOUT0 0x08C34
/* Frequency Out 0 Control register - RW */
#define IXGBE_FREQOUT1 0x08C38
/* Frequency Out 1 Control register - RW */
#define IXGBE_AUXSTMPL0 0x08C3C
/* Auxiliary Time Stamp 0 register Low - RO */
...
...
@@ -1309,6 +1311,7 @@ enum {
#define IXGBE_EICR_LINKSEC 0x00200000
/* PN Threshold */
#define IXGBE_EICR_MNG 0x00400000
/* Manageability Event Interrupt */
#define IXGBE_EICR_TS 0x00800000
/* Thermal Sensor Event */
#define IXGBE_EICR_TIMESYNC 0x01000000
/* Timesync Event */
#define IXGBE_EICR_GPI_SDP0 0x01000000
/* Gen Purpose Interrupt on SDP0 */
#define IXGBE_EICR_GPI_SDP1 0x02000000
/* Gen Purpose Interrupt on SDP1 */
#define IXGBE_EICR_GPI_SDP2 0x04000000
/* Gen Purpose Interrupt on SDP2 */
...
...
@@ -1326,6 +1329,7 @@ enum {
#define IXGBE_EICS_MAILBOX IXGBE_EICR_MAILBOX
/* VF to PF Mailbox Int */
#define IXGBE_EICS_LSC IXGBE_EICR_LSC
/* Link Status Change */
#define IXGBE_EICS_MNG IXGBE_EICR_MNG
/* MNG Event Interrupt */
#define IXGBE_EICS_TIMESYNC IXGBE_EICR_TIMESYNC
/* Timesync Event */
#define IXGBE_EICS_GPI_SDP0 IXGBE_EICR_GPI_SDP0
/* SDP0 Gen Purpose Int */
#define IXGBE_EICS_GPI_SDP1 IXGBE_EICR_GPI_SDP1
/* SDP1 Gen Purpose Int */
#define IXGBE_EICS_GPI_SDP2 IXGBE_EICR_GPI_SDP2
/* SDP2 Gen Purpose Int */
...
...
@@ -1344,6 +1348,7 @@ enum {
#define IXGBE_EIMS_LSC IXGBE_EICR_LSC
/* Link Status Change */
#define IXGBE_EIMS_MNG IXGBE_EICR_MNG
/* MNG Event Interrupt */
#define IXGBE_EIMS_TS IXGBE_EICR_TS
/* Thermel Sensor Event */
#define IXGBE_EIMS_TIMESYNC IXGBE_EICR_TIMESYNC
/* Timesync Event */
#define IXGBE_EIMS_GPI_SDP0 IXGBE_EICR_GPI_SDP0
/* SDP0 Gen Purpose Int */
#define IXGBE_EIMS_GPI_SDP1 IXGBE_EICR_GPI_SDP1
/* SDP1 Gen Purpose Int */
#define IXGBE_EIMS_GPI_SDP2 IXGBE_EICR_GPI_SDP2
/* SDP2 Gen Purpose Int */
...
...
@@ -1361,6 +1366,7 @@ enum {
#define IXGBE_EIMC_MAILBOX IXGBE_EICR_MAILBOX
/* VF to PF Mailbox Int */
#define IXGBE_EIMC_LSC IXGBE_EICR_LSC
/* Link Status Change */
#define IXGBE_EIMC_MNG IXGBE_EICR_MNG
/* MNG Event Interrupt */
#define IXGBE_EIMC_TIMESYNC IXGBE_EICR_TIMESYNC
/* Timesync Event */
#define IXGBE_EIMC_GPI_SDP0 IXGBE_EICR_GPI_SDP0
/* SDP0 Gen Purpose Int */
#define IXGBE_EIMC_GPI_SDP1 IXGBE_EICR_GPI_SDP1
/* SDP1 Gen Purpose Int */
#define IXGBE_EIMC_GPI_SDP2 IXGBE_EICR_GPI_SDP2
/* SDP2 Gen Purpose Int */
...
...
@@ -1501,8 +1507,10 @@ enum {
#define IXGBE_ESDP_SDP4 0x00000010
/* SDP4 Data Value */
#define IXGBE_ESDP_SDP5 0x00000020
/* SDP5 Data Value */
#define IXGBE_ESDP_SDP6 0x00000040
/* SDP6 Data Value */
#define IXGBE_ESDP_SDP0_DIR 0x00000100
/* SDP0 IO direction */
#define IXGBE_ESDP_SDP4_DIR 0x00000004
/* SDP4 IO direction */
#define IXGBE_ESDP_SDP5_DIR 0x00002000
/* SDP5 IO direction */
#define IXGBE_ESDP_SDP0_NATIVE 0x00010000
/* SDP0 Native Function */
/* LEDCTL Bit Masks */
#define IXGBE_LED_IVRT_BASE 0x00000040
...
...
@@ -1879,6 +1887,40 @@ enum {
#define IXGBE_RXDCTL_RLPML_EN 0x00008000
#define IXGBE_RXDCTL_VME 0x40000000
/* VLAN mode enable */
#define IXGBE_TSAUXC_EN_CLK 0x00000004
#define IXGBE_TSAUXC_SYNCLK 0x00000008
#define IXGBE_TSAUXC_SDP0_INT 0x00000040
#define IXGBE_TSYNCTXCTL_VALID 0x00000001
/* Tx timestamp valid */
#define IXGBE_TSYNCTXCTL_ENABLED 0x00000010
/* Tx timestamping enabled */
#define IXGBE_TSYNCRXCTL_VALID 0x00000001
/* Rx timestamp valid */
#define IXGBE_TSYNCRXCTL_TYPE_MASK 0x0000000E
/* Rx type mask */
#define IXGBE_TSYNCRXCTL_TYPE_L2_V2 0x00
#define IXGBE_TSYNCRXCTL_TYPE_L4_V1 0x02
#define IXGBE_TSYNCRXCTL_TYPE_L2_L4_V2 0x04
#define IXGBE_TSYNCRXCTL_TYPE_EVENT_V2 0x0A
#define IXGBE_TSYNCRXCTL_ENABLED 0x00000010
/* Rx Timestamping enabled */
#define IXGBE_RXMTRL_V1_CTRLT_MASK 0x000000FF
#define IXGBE_RXMTRL_V1_SYNC_MSG 0x00
#define IXGBE_RXMTRL_V1_DELAY_REQ_MSG 0x01
#define IXGBE_RXMTRL_V1_FOLLOWUP_MSG 0x02
#define IXGBE_RXMTRL_V1_DELAY_RESP_MSG 0x03
#define IXGBE_RXMTRL_V1_MGMT_MSG 0x04
#define IXGBE_RXMTRL_V2_MSGID_MASK 0x0000FF00
#define IXGBE_RXMTRL_V2_SYNC_MSG 0x0000
#define IXGBE_RXMTRL_V2_DELAY_REQ_MSG 0x0100
#define IXGBE_RXMTRL_V2_PDELAY_REQ_MSG 0x0200
#define IXGBE_RXMTRL_V2_PDELAY_RESP_MSG 0x0300
#define IXGBE_RXMTRL_V2_FOLLOWUP_MSG 0x0800
#define IXGBE_RXMTRL_V2_DELAY_RESP_MSG 0x0900
#define IXGBE_RXMTRL_V2_PDELAY_FOLLOWUP_MSG 0x0A00
#define IXGBE_RXMTRL_V2_ANNOUNCE_MSG 0x0B00
#define IXGBE_RXMTRL_V2_SIGNALING_MSG 0x0C00
#define IXGBE_RXMTRL_V2_MGMT_MSG 0x0D00
#define IXGBE_FCTRL_SBP 0x00000002
/* Store Bad Packet */
#define IXGBE_FCTRL_MPE 0x00000100
/* Multicast Promiscuous Ena*/
#define IXGBE_FCTRL_UPE 0x00000200
/* Unicast Promiscuous Ena */
...
...
@@ -2008,6 +2050,7 @@ enum {
#define IXGBE_RXDADV_STAT_FCSTAT_NODDP 0x00000010
/* 01: Ctxt w/o DDP */
#define IXGBE_RXDADV_STAT_FCSTAT_FCPRSP 0x00000020
/* 10: Recv. FCP_RSP */
#define IXGBE_RXDADV_STAT_FCSTAT_DDP 0x00000030
/* 11: Ctxt w/ DDP */
#define IXGBE_RXDADV_STAT_TS 0x00010000
/* IEEE 1588 Time Stamp */
/* PSRTYPE bit definitions */
#define IXGBE_PSRTYPE_TCPHDR 0x00000010
...
...
@@ -2285,6 +2328,7 @@ struct ixgbe_adv_tx_context_desc {
/* Adv Transmit Descriptor Config Masks */
#define IXGBE_ADVTXD_DTALEN_MASK 0x0000FFFF
/* Data buf length(bytes) */
#define IXGBE_ADVTXD_MAC_LINKSEC 0x00040000
/* Insert LinkSec */
#define IXGBE_ADVTXD_MAC_TSTAMP 0x00080000
/* IEEE 1588 Time Stamp */
#define IXGBE_ADVTXD_IPSEC_SA_INDEX_MASK 0x000003FF
/* IPSec SA index */
#define IXGBE_ADVTXD_IPSEC_ESP_LEN_MASK 0x000001FF
/* IPSec ESP length */
#define IXGBE_ADVTXD_DTYP_MASK 0x00F00000
/* DTYP mask */
...
...
@@ -2573,9 +2617,6 @@ enum ixgbe_fc_mode {
ixgbe_fc_rx_pause
,
ixgbe_fc_tx_pause
,
ixgbe_fc_full
,
#ifdef CONFIG_DCB
ixgbe_fc_pfc
,
#endif
ixgbe_fc_default
};
...
...
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