Commit 0340501b authored by Jeff Kirsher's avatar Jeff Kirsher

igbvf: Fix code comments and whitespace

Fix the code comments to align with the drivers/net/ commenting style.
Also fix other checkpatch errors such as using tabs where possible and
properly wrap lines to conform to the 80 char limit (unless it is
a string).
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tested-by: default avatarAaron Brown <aaron.f.brown@intel.com>
parent 79849ebc
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -29,94 +28,93 @@ ...@@ -29,94 +28,93 @@
#define _E1000_DEFINES_H_ #define _E1000_DEFINES_H_
/* Number of Transmit and Receive Descriptors must be a multiple of 8 */ /* Number of Transmit and Receive Descriptors must be a multiple of 8 */
#define REQ_TX_DESCRIPTOR_MULTIPLE 8 #define REQ_TX_DESCRIPTOR_MULTIPLE 8
#define REQ_RX_DESCRIPTOR_MULTIPLE 8 #define REQ_RX_DESCRIPTOR_MULTIPLE 8
/* IVAR valid bit */ /* IVAR valid bit */
#define E1000_IVAR_VALID 0x80 #define E1000_IVAR_VALID 0x80
/* Receive Descriptor bit definitions */ /* Receive Descriptor bit definitions */
#define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */ #define E1000_RXD_STAT_DD 0x01 /* Descriptor Done */
#define E1000_RXD_STAT_EOP 0x02 /* End of Packet */ #define E1000_RXD_STAT_EOP 0x02 /* End of Packet */
#define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */ #define E1000_RXD_STAT_IXSM 0x04 /* Ignore checksum */
#define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */ #define E1000_RXD_STAT_VP 0x08 /* IEEE VLAN Packet */
#define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */ #define E1000_RXD_STAT_UDPCS 0x10 /* UDP xsum calculated */
#define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */ #define E1000_RXD_STAT_TCPCS 0x20 /* TCP xsum calculated */
#define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */ #define E1000_RXD_STAT_IPCS 0x40 /* IP xsum calculated */
#define E1000_RXD_ERR_SE 0x02 /* Symbol Error */ #define E1000_RXD_ERR_SE 0x02 /* Symbol Error */
#define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */ #define E1000_RXD_SPC_VLAN_MASK 0x0FFF /* VLAN ID is in lower 12 bits */
#define E1000_RXDEXT_STATERR_LB 0x00040000 #define E1000_RXDEXT_STATERR_LB 0x00040000
#define E1000_RXDEXT_STATERR_CE 0x01000000 #define E1000_RXDEXT_STATERR_CE 0x01000000
#define E1000_RXDEXT_STATERR_SE 0x02000000 #define E1000_RXDEXT_STATERR_SE 0x02000000
#define E1000_RXDEXT_STATERR_SEQ 0x04000000 #define E1000_RXDEXT_STATERR_SEQ 0x04000000
#define E1000_RXDEXT_STATERR_CXE 0x10000000 #define E1000_RXDEXT_STATERR_CXE 0x10000000
#define E1000_RXDEXT_STATERR_TCPE 0x20000000 #define E1000_RXDEXT_STATERR_TCPE 0x20000000
#define E1000_RXDEXT_STATERR_IPE 0x40000000 #define E1000_RXDEXT_STATERR_IPE 0x40000000
#define E1000_RXDEXT_STATERR_RXE 0x80000000 #define E1000_RXDEXT_STATERR_RXE 0x80000000
/* Same mask, but for extended and packet split descriptors */ /* Same mask, but for extended and packet split descriptors */
#define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \ #define E1000_RXDEXT_ERR_FRAME_ERR_MASK ( \
E1000_RXDEXT_STATERR_CE | \ E1000_RXDEXT_STATERR_CE | \
E1000_RXDEXT_STATERR_SE | \ E1000_RXDEXT_STATERR_SE | \
E1000_RXDEXT_STATERR_SEQ | \ E1000_RXDEXT_STATERR_SEQ | \
E1000_RXDEXT_STATERR_CXE | \ E1000_RXDEXT_STATERR_CXE | \
E1000_RXDEXT_STATERR_RXE) E1000_RXDEXT_STATERR_RXE)
/* Device Control */ /* Device Control */
#define E1000_CTRL_RST 0x04000000 /* Global reset */ #define E1000_CTRL_RST 0x04000000 /* Global reset */
/* Device Status */ /* Device Status */
#define E1000_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */ #define E1000_STATUS_FD 0x00000001 /* Full duplex.0=half,1=full */
#define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */ #define E1000_STATUS_LU 0x00000002 /* Link up.0=no,1=link */
#define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */ #define E1000_STATUS_TXOFF 0x00000010 /* transmission paused */
#define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */ #define E1000_STATUS_SPEED_10 0x00000000 /* Speed 10Mb/s */
#define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */ #define E1000_STATUS_SPEED_100 0x00000040 /* Speed 100Mb/s */
#define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */ #define E1000_STATUS_SPEED_1000 0x00000080 /* Speed 1000Mb/s */
#define SPEED_10 10 #define SPEED_10 10
#define SPEED_100 100 #define SPEED_100 100
#define SPEED_1000 1000 #define SPEED_1000 1000
#define HALF_DUPLEX 1 #define HALF_DUPLEX 1
#define FULL_DUPLEX 2 #define FULL_DUPLEX 2
/* Transmit Descriptor bit definitions */ /* Transmit Descriptor bit definitions */
#define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */ #define E1000_TXD_POPTS_IXSM 0x01 /* Insert IP checksum */
#define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */ #define E1000_TXD_POPTS_TXSM 0x02 /* Insert TCP/UDP checksum */
#define E1000_TXD_CMD_DEXT 0x20000000 /* Descriptor extension (0 = legacy) */ #define E1000_TXD_CMD_DEXT 0x20000000 /* Desc extension (0 = legacy) */
#define E1000_TXD_STAT_DD 0x00000001 /* Descriptor Done */ #define E1000_TXD_STAT_DD 0x00000001 /* Desc Done */
#define MAX_JUMBO_FRAME_SIZE 0x3F00 #define MAX_JUMBO_FRAME_SIZE 0x3F00
/* 802.1q VLAN Packet Size */ /* 802.1q VLAN Packet Size */
#define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */ #define VLAN_TAG_SIZE 4 /* 802.3ac tag (not DMA'd) */
/* Error Codes */ /* Error Codes */
#define E1000_SUCCESS 0 #define E1000_SUCCESS 0
#define E1000_ERR_CONFIG 3 #define E1000_ERR_CONFIG 3
#define E1000_ERR_MAC_INIT 5 #define E1000_ERR_MAC_INIT 5
#define E1000_ERR_MBX 15 #define E1000_ERR_MBX 15
/* SRRCTL bit definitions */ /* SRRCTL bit definitions */
#define E1000_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */ #define E1000_SRRCTL_BSIZEPKT_SHIFT 10 /* Shift _right_ */
#define E1000_SRRCTL_BSIZEHDRSIZE_MASK 0x00000F00 #define E1000_SRRCTL_BSIZEHDRSIZE_MASK 0x00000F00
#define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */ #define E1000_SRRCTL_BSIZEHDRSIZE_SHIFT 2 /* Shift _left_ */
#define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000 #define E1000_SRRCTL_DESCTYPE_ADV_ONEBUF 0x02000000
#define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000 #define E1000_SRRCTL_DESCTYPE_HDR_SPLIT_ALWAYS 0x0A000000
#define E1000_SRRCTL_DESCTYPE_MASK 0x0E000000 #define E1000_SRRCTL_DESCTYPE_MASK 0x0E000000
#define E1000_SRRCTL_DROP_EN 0x80000000 #define E1000_SRRCTL_DROP_EN 0x80000000
#define E1000_SRRCTL_BSIZEPKT_MASK 0x0000007F #define E1000_SRRCTL_BSIZEPKT_MASK 0x0000007F
#define E1000_SRRCTL_BSIZEHDR_MASK 0x00003F00 #define E1000_SRRCTL_BSIZEHDR_MASK 0x00003F00
/* Additional Descriptor Control definitions */ /* Additional Descriptor Control definitions */
#define E1000_TXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Tx Queue */ #define E1000_TXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Tx Que */
#define E1000_RXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Rx Queue */ #define E1000_RXDCTL_QUEUE_ENABLE 0x02000000 /* Enable specific Rx Que */
/* Direct Cache Access (DCA) definitions */ /* Direct Cache Access (DCA) definitions */
#define E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11) /* Tx Desc writeback RO bit */ #define E1000_DCA_TXCTRL_TX_WB_RO_EN (1 << 11) /* Tx Desc writeback RO bit */
#define E1000_VF_INIT_TIMEOUT 200 /* Number of retries to clear RSTI */ #define E1000_VF_INIT_TIMEOUT 200 /* Number of retries to clear RSTI */
#endif /* _E1000_DEFINES_H_ */ #endif /* _E1000_DEFINES_H_ */
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -36,7 +35,6 @@ ...@@ -36,7 +35,6 @@
#include "igbvf.h" #include "igbvf.h"
#include <linux/if_vlan.h> #include <linux/if_vlan.h>
struct igbvf_stats { struct igbvf_stats {
char stat_string[ETH_GSTRING_LEN]; char stat_string[ETH_GSTRING_LEN];
int sizeof_stat; int sizeof_stat;
...@@ -74,7 +72,7 @@ static const char igbvf_gstrings_test[][ETH_GSTRING_LEN] = { ...@@ -74,7 +72,7 @@ static const char igbvf_gstrings_test[][ETH_GSTRING_LEN] = {
#define IGBVF_TEST_LEN ARRAY_SIZE(igbvf_gstrings_test) #define IGBVF_TEST_LEN ARRAY_SIZE(igbvf_gstrings_test)
static int igbvf_get_settings(struct net_device *netdev, static int igbvf_get_settings(struct net_device *netdev,
struct ethtool_cmd *ecmd) struct ethtool_cmd *ecmd)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
...@@ -111,18 +109,18 @@ static int igbvf_get_settings(struct net_device *netdev, ...@@ -111,18 +109,18 @@ static int igbvf_get_settings(struct net_device *netdev,
} }
static int igbvf_set_settings(struct net_device *netdev, static int igbvf_set_settings(struct net_device *netdev,
struct ethtool_cmd *ecmd) struct ethtool_cmd *ecmd)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static void igbvf_get_pauseparam(struct net_device *netdev, static void igbvf_get_pauseparam(struct net_device *netdev,
struct ethtool_pauseparam *pause) struct ethtool_pauseparam *pause)
{ {
} }
static int igbvf_set_pauseparam(struct net_device *netdev, static int igbvf_set_pauseparam(struct net_device *netdev,
struct ethtool_pauseparam *pause) struct ethtool_pauseparam *pause)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
...@@ -130,12 +128,14 @@ static int igbvf_set_pauseparam(struct net_device *netdev, ...@@ -130,12 +128,14 @@ static int igbvf_set_pauseparam(struct net_device *netdev,
static u32 igbvf_get_msglevel(struct net_device *netdev) static u32 igbvf_get_msglevel(struct net_device *netdev)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
return adapter->msg_enable; return adapter->msg_enable;
} }
static void igbvf_set_msglevel(struct net_device *netdev, u32 data) static void igbvf_set_msglevel(struct net_device *netdev, u32 data)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
adapter->msg_enable = data; adapter->msg_enable = data;
} }
...@@ -146,7 +146,7 @@ static int igbvf_get_regs_len(struct net_device *netdev) ...@@ -146,7 +146,7 @@ static int igbvf_get_regs_len(struct net_device *netdev)
} }
static void igbvf_get_regs(struct net_device *netdev, static void igbvf_get_regs(struct net_device *netdev,
struct ethtool_regs *regs, void *p) struct ethtool_regs *regs, void *p)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
...@@ -175,19 +175,19 @@ static int igbvf_get_eeprom_len(struct net_device *netdev) ...@@ -175,19 +175,19 @@ static int igbvf_get_eeprom_len(struct net_device *netdev)
} }
static int igbvf_get_eeprom(struct net_device *netdev, static int igbvf_get_eeprom(struct net_device *netdev,
struct ethtool_eeprom *eeprom, u8 *bytes) struct ethtool_eeprom *eeprom, u8 *bytes)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static int igbvf_set_eeprom(struct net_device *netdev, static int igbvf_set_eeprom(struct net_device *netdev,
struct ethtool_eeprom *eeprom, u8 *bytes) struct ethtool_eeprom *eeprom, u8 *bytes)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static void igbvf_get_drvinfo(struct net_device *netdev, static void igbvf_get_drvinfo(struct net_device *netdev,
struct ethtool_drvinfo *drvinfo) struct ethtool_drvinfo *drvinfo)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
...@@ -201,7 +201,7 @@ static void igbvf_get_drvinfo(struct net_device *netdev, ...@@ -201,7 +201,7 @@ static void igbvf_get_drvinfo(struct net_device *netdev,
} }
static void igbvf_get_ringparam(struct net_device *netdev, static void igbvf_get_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring) struct ethtool_ringparam *ring)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
struct igbvf_ring *tx_ring = adapter->tx_ring; struct igbvf_ring *tx_ring = adapter->tx_ring;
...@@ -214,7 +214,7 @@ static void igbvf_get_ringparam(struct net_device *netdev, ...@@ -214,7 +214,7 @@ static void igbvf_get_ringparam(struct net_device *netdev,
} }
static int igbvf_set_ringparam(struct net_device *netdev, static int igbvf_set_ringparam(struct net_device *netdev,
struct ethtool_ringparam *ring) struct ethtool_ringparam *ring)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
struct igbvf_ring *temp_ring; struct igbvf_ring *temp_ring;
...@@ -255,10 +255,9 @@ static int igbvf_set_ringparam(struct net_device *netdev, ...@@ -255,10 +255,9 @@ static int igbvf_set_ringparam(struct net_device *netdev,
igbvf_down(adapter); igbvf_down(adapter);
/* /* We can't just free everything and then setup again,
* We can't just free everything and then setup again,
* because the ISRs in MSI-X mode get passed pointers * because the ISRs in MSI-X mode get passed pointers
* to the tx and rx ring structs. * to the Tx and Rx ring structs.
*/ */
if (new_tx_count != adapter->tx_ring->count) { if (new_tx_count != adapter->tx_ring->count) {
memcpy(temp_ring, adapter->tx_ring, sizeof(struct igbvf_ring)); memcpy(temp_ring, adapter->tx_ring, sizeof(struct igbvf_ring));
...@@ -283,7 +282,7 @@ static int igbvf_set_ringparam(struct net_device *netdev, ...@@ -283,7 +282,7 @@ static int igbvf_set_ringparam(struct net_device *netdev,
igbvf_free_rx_resources(adapter->rx_ring); igbvf_free_rx_resources(adapter->rx_ring);
memcpy(adapter->rx_ring, temp_ring,sizeof(struct igbvf_ring)); memcpy(adapter->rx_ring, temp_ring, sizeof(struct igbvf_ring));
} }
err_setup: err_setup:
igbvf_up(adapter); igbvf_up(adapter);
...@@ -307,14 +306,13 @@ static int igbvf_link_test(struct igbvf_adapter *adapter, u64 *data) ...@@ -307,14 +306,13 @@ static int igbvf_link_test(struct igbvf_adapter *adapter, u64 *data)
} }
static void igbvf_diag_test(struct net_device *netdev, static void igbvf_diag_test(struct net_device *netdev,
struct ethtool_test *eth_test, u64 *data) struct ethtool_test *eth_test, u64 *data)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
set_bit(__IGBVF_TESTING, &adapter->state); set_bit(__IGBVF_TESTING, &adapter->state);
/* /* Link test performed before hardware reset so autoneg doesn't
* Link test performed before hardware reset so autoneg doesn't
* interfere with test result * interfere with test result
*/ */
if (igbvf_link_test(adapter, &data[0])) if (igbvf_link_test(adapter, &data[0]))
...@@ -325,20 +323,20 @@ static void igbvf_diag_test(struct net_device *netdev, ...@@ -325,20 +323,20 @@ static void igbvf_diag_test(struct net_device *netdev,
} }
static void igbvf_get_wol(struct net_device *netdev, static void igbvf_get_wol(struct net_device *netdev,
struct ethtool_wolinfo *wol) struct ethtool_wolinfo *wol)
{ {
wol->supported = 0; wol->supported = 0;
wol->wolopts = 0; wol->wolopts = 0;
} }
static int igbvf_set_wol(struct net_device *netdev, static int igbvf_set_wol(struct net_device *netdev,
struct ethtool_wolinfo *wol) struct ethtool_wolinfo *wol)
{ {
return -EOPNOTSUPP; return -EOPNOTSUPP;
} }
static int igbvf_get_coalesce(struct net_device *netdev, static int igbvf_get_coalesce(struct net_device *netdev,
struct ethtool_coalesce *ec) struct ethtool_coalesce *ec)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
...@@ -351,13 +349,13 @@ static int igbvf_get_coalesce(struct net_device *netdev, ...@@ -351,13 +349,13 @@ static int igbvf_get_coalesce(struct net_device *netdev,
} }
static int igbvf_set_coalesce(struct net_device *netdev, static int igbvf_set_coalesce(struct net_device *netdev,
struct ethtool_coalesce *ec) struct ethtool_coalesce *ec)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
if ((ec->rx_coalesce_usecs >= IGBVF_MIN_ITR_USECS) && if ((ec->rx_coalesce_usecs >= IGBVF_MIN_ITR_USECS) &&
(ec->rx_coalesce_usecs <= IGBVF_MAX_ITR_USECS)) { (ec->rx_coalesce_usecs <= IGBVF_MAX_ITR_USECS)) {
adapter->current_itr = ec->rx_coalesce_usecs << 2; adapter->current_itr = ec->rx_coalesce_usecs << 2;
adapter->requested_itr = 1000000000 / adapter->requested_itr = 1000000000 /
(adapter->current_itr * 256); (adapter->current_itr * 256);
...@@ -366,8 +364,7 @@ static int igbvf_set_coalesce(struct net_device *netdev, ...@@ -366,8 +364,7 @@ static int igbvf_set_coalesce(struct net_device *netdev,
adapter->current_itr = IGBVF_START_ITR; adapter->current_itr = IGBVF_START_ITR;
adapter->requested_itr = ec->rx_coalesce_usecs; adapter->requested_itr = ec->rx_coalesce_usecs;
} else if (ec->rx_coalesce_usecs == 0) { } else if (ec->rx_coalesce_usecs == 0) {
/* /* The user's desire is to turn off interrupt throttling
* The user's desire is to turn off interrupt throttling
* altogether, but due to HW limitations, we can't do that. * altogether, but due to HW limitations, we can't do that.
* Instead we set a very small value in EITR, which would * Instead we set a very small value in EITR, which would
* allow ~967k interrupts per second, but allow the adapter's * allow ~967k interrupts per second, but allow the adapter's
...@@ -376,8 +373,9 @@ static int igbvf_set_coalesce(struct net_device *netdev, ...@@ -376,8 +373,9 @@ static int igbvf_set_coalesce(struct net_device *netdev,
adapter->current_itr = 4; adapter->current_itr = 4;
adapter->requested_itr = 1000000000 / adapter->requested_itr = 1000000000 /
(adapter->current_itr * 256); (adapter->current_itr * 256);
} else } else {
return -EINVAL; return -EINVAL;
}
writel(adapter->current_itr, writel(adapter->current_itr,
hw->hw_addr + adapter->rx_ring->itr_register); hw->hw_addr + adapter->rx_ring->itr_register);
...@@ -388,15 +386,15 @@ static int igbvf_set_coalesce(struct net_device *netdev, ...@@ -388,15 +386,15 @@ static int igbvf_set_coalesce(struct net_device *netdev,
static int igbvf_nway_reset(struct net_device *netdev) static int igbvf_nway_reset(struct net_device *netdev)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
if (netif_running(netdev)) if (netif_running(netdev))
igbvf_reinit_locked(adapter); igbvf_reinit_locked(adapter);
return 0; return 0;
} }
static void igbvf_get_ethtool_stats(struct net_device *netdev, static void igbvf_get_ethtool_stats(struct net_device *netdev,
struct ethtool_stats *stats, struct ethtool_stats *stats,
u64 *data) u64 *data)
{ {
struct igbvf_adapter *adapter = netdev_priv(netdev); struct igbvf_adapter *adapter = netdev_priv(netdev);
int i; int i;
...@@ -404,19 +402,18 @@ static void igbvf_get_ethtool_stats(struct net_device *netdev, ...@@ -404,19 +402,18 @@ static void igbvf_get_ethtool_stats(struct net_device *netdev,
igbvf_update_stats(adapter); igbvf_update_stats(adapter);
for (i = 0; i < IGBVF_GLOBAL_STATS_LEN; i++) { for (i = 0; i < IGBVF_GLOBAL_STATS_LEN; i++) {
char *p = (char *)adapter + char *p = (char *)adapter +
igbvf_gstrings_stats[i].stat_offset; igbvf_gstrings_stats[i].stat_offset;
char *b = (char *)adapter + char *b = (char *)adapter +
igbvf_gstrings_stats[i].base_stat_offset; igbvf_gstrings_stats[i].base_stat_offset;
data[i] = ((igbvf_gstrings_stats[i].sizeof_stat == data[i] = ((igbvf_gstrings_stats[i].sizeof_stat ==
sizeof(u64)) ? (*(u64 *)p - *(u64 *)b) : sizeof(u64)) ? (*(u64 *)p - *(u64 *)b) :
(*(u32 *)p - *(u32 *)b)); (*(u32 *)p - *(u32 *)b));
} }
} }
static int igbvf_get_sset_count(struct net_device *dev, int stringset) static int igbvf_get_sset_count(struct net_device *dev, int stringset)
{ {
switch(stringset) { switch (stringset) {
case ETH_SS_TEST: case ETH_SS_TEST:
return IGBVF_TEST_LEN; return IGBVF_TEST_LEN;
case ETH_SS_STATS: case ETH_SS_STATS:
...@@ -427,7 +424,7 @@ static int igbvf_get_sset_count(struct net_device *dev, int stringset) ...@@ -427,7 +424,7 @@ static int igbvf_get_sset_count(struct net_device *dev, int stringset)
} }
static void igbvf_get_strings(struct net_device *netdev, u32 stringset, static void igbvf_get_strings(struct net_device *netdev, u32 stringset,
u8 *data) u8 *data)
{ {
u8 *p = data; u8 *p = data;
int i; int i;
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -43,10 +42,10 @@ struct igbvf_info; ...@@ -43,10 +42,10 @@ struct igbvf_info;
struct igbvf_adapter; struct igbvf_adapter;
/* Interrupt defines */ /* Interrupt defines */
#define IGBVF_START_ITR 488 /* ~8000 ints/sec */ #define IGBVF_START_ITR 488 /* ~8000 ints/sec */
#define IGBVF_4K_ITR 980 #define IGBVF_4K_ITR 980
#define IGBVF_20K_ITR 196 #define IGBVF_20K_ITR 196
#define IGBVF_70K_ITR 56 #define IGBVF_70K_ITR 56
enum latency_range { enum latency_range {
lowest_latency = 0, lowest_latency = 0,
...@@ -55,56 +54,55 @@ enum latency_range { ...@@ -55,56 +54,55 @@ enum latency_range {
latency_invalid = 255 latency_invalid = 255
}; };
/* Interrupt modes, as used by the IntMode parameter */ /* Interrupt modes, as used by the IntMode parameter */
#define IGBVF_INT_MODE_LEGACY 0 #define IGBVF_INT_MODE_LEGACY 0
#define IGBVF_INT_MODE_MSI 1 #define IGBVF_INT_MODE_MSI 1
#define IGBVF_INT_MODE_MSIX 2 #define IGBVF_INT_MODE_MSIX 2
/* Tx/Rx descriptor defines */ /* Tx/Rx descriptor defines */
#define IGBVF_DEFAULT_TXD 256 #define IGBVF_DEFAULT_TXD 256
#define IGBVF_MAX_TXD 4096 #define IGBVF_MAX_TXD 4096
#define IGBVF_MIN_TXD 80 #define IGBVF_MIN_TXD 80
#define IGBVF_DEFAULT_RXD 256 #define IGBVF_DEFAULT_RXD 256
#define IGBVF_MAX_RXD 4096 #define IGBVF_MAX_RXD 4096
#define IGBVF_MIN_RXD 80 #define IGBVF_MIN_RXD 80
#define IGBVF_MIN_ITR_USECS 10 /* 100000 irq/sec */ #define IGBVF_MIN_ITR_USECS 10 /* 100000 irq/sec */
#define IGBVF_MAX_ITR_USECS 10000 /* 100 irq/sec */ #define IGBVF_MAX_ITR_USECS 10000 /* 100 irq/sec */
/* RX descriptor control thresholds. /* RX descriptor control thresholds.
* PTHRESH - MAC will consider prefetch if it has fewer than this number of * PTHRESH - MAC will consider prefetch if it has fewer than this number of
* descriptors available in its onboard memory. * descriptors available in its onboard memory.
* Setting this to 0 disables RX descriptor prefetch. * Setting this to 0 disables RX descriptor prefetch.
* HTHRESH - MAC will only prefetch if there are at least this many descriptors * HTHRESH - MAC will only prefetch if there are at least this many descriptors
* available in host memory. * available in host memory.
* If PTHRESH is 0, this should also be 0. * If PTHRESH is 0, this should also be 0.
* WTHRESH - RX descriptor writeback threshold - MAC will delay writing back * WTHRESH - RX descriptor writeback threshold - MAC will delay writing back
* descriptors until either it has this many to write back, or the * descriptors until either it has this many to write back, or the
* ITR timer expires. * ITR timer expires.
*/ */
#define IGBVF_RX_PTHRESH 16 #define IGBVF_RX_PTHRESH 16
#define IGBVF_RX_HTHRESH 8 #define IGBVF_RX_HTHRESH 8
#define IGBVF_RX_WTHRESH 1 #define IGBVF_RX_WTHRESH 1
/* this is the size past which hardware will drop packets when setting LPE=0 */ /* this is the size past which hardware will drop packets when setting LPE=0 */
#define MAXIMUM_ETHERNET_VLAN_SIZE 1522 #define MAXIMUM_ETHERNET_VLAN_SIZE 1522
#define IGBVF_FC_PAUSE_TIME 0x0680 /* 858 usec */ #define IGBVF_FC_PAUSE_TIME 0x0680 /* 858 usec */
/* How many Tx Descriptors do we need to call netif_wake_queue ? */ /* How many Tx Descriptors do we need to call netif_wake_queue ? */
#define IGBVF_TX_QUEUE_WAKE 32 #define IGBVF_TX_QUEUE_WAKE 32
/* How many Rx Buffers do we bundle into one write to the hardware ? */ /* How many Rx Buffers do we bundle into one write to the hardware ? */
#define IGBVF_RX_BUFFER_WRITE 16 /* Must be power of 2 */ #define IGBVF_RX_BUFFER_WRITE 16 /* Must be power of 2 */
#define AUTO_ALL_MODES 0 #define AUTO_ALL_MODES 0
#define IGBVF_EEPROM_APME 0x0400 #define IGBVF_EEPROM_APME 0x0400
#define IGBVF_MNG_VLAN_NONE (-1) #define IGBVF_MNG_VLAN_NONE (-1)
/* Number of packet split data buffers (not including the header buffer) */ /* Number of packet split data buffers (not including the header buffer) */
#define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1) #define PS_PAGE_BUFFERS (MAX_PS_BUFFERS - 1)
enum igbvf_boards { enum igbvf_boards {
board_vf, board_vf,
...@@ -116,8 +114,7 @@ struct igbvf_queue_stats { ...@@ -116,8 +114,7 @@ struct igbvf_queue_stats {
u64 bytes; u64 bytes;
}; };
/* /* wrappers around a pointer to a socket buffer,
* wrappers around a pointer to a socket buffer,
* so a DMA handle can be stored along with the buffer * so a DMA handle can be stored along with the buffer
*/ */
struct igbvf_buffer { struct igbvf_buffer {
...@@ -148,10 +145,10 @@ union igbvf_desc { ...@@ -148,10 +145,10 @@ union igbvf_desc {
struct igbvf_ring { struct igbvf_ring {
struct igbvf_adapter *adapter; /* backlink */ struct igbvf_adapter *adapter; /* backlink */
union igbvf_desc *desc; /* pointer to ring memory */ union igbvf_desc *desc; /* pointer to ring memory */
dma_addr_t dma; /* phys address of ring */ dma_addr_t dma; /* phys address of ring */
unsigned int size; /* length of ring in bytes */ unsigned int size; /* length of ring in bytes */
unsigned int count; /* number of desc. in ring */ unsigned int count; /* number of desc. in ring */
u16 next_to_use; u16 next_to_use;
u16 next_to_clean; u16 next_to_clean;
...@@ -202,9 +199,7 @@ struct igbvf_adapter { ...@@ -202,9 +199,7 @@ struct igbvf_adapter {
u32 requested_itr; /* ints/sec or adaptive */ u32 requested_itr; /* ints/sec or adaptive */
u32 current_itr; /* Actual ITR register value, not ints/sec */ u32 current_itr; /* Actual ITR register value, not ints/sec */
/* /* Tx */
* Tx
*/
struct igbvf_ring *tx_ring /* One per active queue */ struct igbvf_ring *tx_ring /* One per active queue */
____cacheline_aligned_in_smp; ____cacheline_aligned_in_smp;
...@@ -226,9 +221,7 @@ struct igbvf_adapter { ...@@ -226,9 +221,7 @@ struct igbvf_adapter {
u32 tx_fifo_size; u32 tx_fifo_size;
u32 tx_dma_failed; u32 tx_dma_failed;
/* /* Rx */
* Rx
*/
struct igbvf_ring *rx_ring; struct igbvf_ring *rx_ring;
u32 rx_int_delay; u32 rx_int_delay;
...@@ -249,7 +242,7 @@ struct igbvf_adapter { ...@@ -249,7 +242,7 @@ struct igbvf_adapter {
struct net_device *netdev; struct net_device *netdev;
struct pci_dev *pdev; struct pci_dev *pdev;
struct net_device_stats net_stats; struct net_device_stats net_stats;
spinlock_t stats_lock; /* prevent concurrent stats updates */ spinlock_t stats_lock; /* prevent concurrent stats updates */
/* structs defined in e1000_hw.h */ /* structs defined in e1000_hw.h */
struct e1000_hw hw; struct e1000_hw hw;
...@@ -286,16 +279,16 @@ struct igbvf_adapter { ...@@ -286,16 +279,16 @@ struct igbvf_adapter {
}; };
struct igbvf_info { struct igbvf_info {
enum e1000_mac_type mac; enum e1000_mac_type mac;
unsigned int flags; unsigned int flags;
u32 pba; u32 pba;
void (*init_ops)(struct e1000_hw *); void (*init_ops)(struct e1000_hw *);
s32 (*get_variants)(struct igbvf_adapter *); s32 (*get_variants)(struct igbvf_adapter *);
}; };
/* hardware capability, feature, and workaround flags */ /* hardware capability, feature, and workaround flags */
#define IGBVF_FLAG_RX_CSUM_DISABLED (1 << 0) #define IGBVF_FLAG_RX_CSUM_DISABLED (1 << 0)
#define IGBVF_FLAG_RX_LB_VLAN_BSWAP (1 << 1) #define IGBVF_FLAG_RX_LB_VLAN_BSWAP (1 << 1)
#define IGBVF_RX_DESC_ADV(R, i) \ #define IGBVF_RX_DESC_ADV(R, i) \
(&((((R).desc))[i].rx_desc)) (&((((R).desc))[i].rx_desc))
#define IGBVF_TX_DESC_ADV(R, i) \ #define IGBVF_TX_DESC_ADV(R, i) \
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -54,10 +53,10 @@ static s32 e1000_poll_for_msg(struct e1000_hw *hw) ...@@ -54,10 +53,10 @@ static s32 e1000_poll_for_msg(struct e1000_hw *hw)
} }
/** /**
* e1000_poll_for_ack - Wait for message acknowledgement * e1000_poll_for_ack - Wait for message acknowledgment
* @hw: pointer to the HW structure * @hw: pointer to the HW structure
* *
* returns SUCCESS if it successfully received a message acknowledgement * returns SUCCESS if it successfully received a message acknowledgment
**/ **/
static s32 e1000_poll_for_ack(struct e1000_hw *hw) static s32 e1000_poll_for_ack(struct e1000_hw *hw)
{ {
...@@ -218,7 +217,7 @@ static s32 e1000_check_for_rst_vf(struct e1000_hw *hw) ...@@ -218,7 +217,7 @@ static s32 e1000_check_for_rst_vf(struct e1000_hw *hw)
s32 ret_val = -E1000_ERR_MBX; s32 ret_val = -E1000_ERR_MBX;
if (!e1000_check_for_bit_vf(hw, (E1000_V2PMAILBOX_RSTD | if (!e1000_check_for_bit_vf(hw, (E1000_V2PMAILBOX_RSTD |
E1000_V2PMAILBOX_RSTI))) { E1000_V2PMAILBOX_RSTI))) {
ret_val = E1000_SUCCESS; ret_val = E1000_SUCCESS;
hw->mbx.stats.rsts++; hw->mbx.stats.rsts++;
} }
...@@ -239,7 +238,7 @@ static s32 e1000_obtain_mbx_lock_vf(struct e1000_hw *hw) ...@@ -239,7 +238,7 @@ static s32 e1000_obtain_mbx_lock_vf(struct e1000_hw *hw)
/* Take ownership of the buffer */ /* Take ownership of the buffer */
ew32(V2PMAILBOX(0), E1000_V2PMAILBOX_VFU); ew32(V2PMAILBOX(0), E1000_V2PMAILBOX_VFU);
/* reserve mailbox for vf use */ /* reserve mailbox for VF use */
if (e1000_read_v2p_mailbox(hw) & E1000_V2PMAILBOX_VFU) if (e1000_read_v2p_mailbox(hw) & E1000_V2PMAILBOX_VFU)
ret_val = E1000_SUCCESS; ret_val = E1000_SUCCESS;
...@@ -283,7 +282,7 @@ static s32 e1000_write_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size) ...@@ -283,7 +282,7 @@ static s32 e1000_write_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size)
} }
/** /**
* e1000_read_mbx_vf - Reads a message from the inbox intended for vf * e1000_read_mbx_vf - Reads a message from the inbox intended for VF
* @hw: pointer to the HW structure * @hw: pointer to the HW structure
* @msg: The message buffer * @msg: The message buffer
* @size: Length of buffer * @size: Length of buffer
...@@ -315,17 +314,18 @@ static s32 e1000_read_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size) ...@@ -315,17 +314,18 @@ static s32 e1000_read_mbx_vf(struct e1000_hw *hw, u32 *msg, u16 size)
} }
/** /**
* e1000_init_mbx_params_vf - set initial values for vf mailbox * e1000_init_mbx_params_vf - set initial values for VF mailbox
* @hw: pointer to the HW structure * @hw: pointer to the HW structure
* *
* Initializes the hw->mbx struct to correct values for vf mailbox * Initializes the hw->mbx struct to correct values for VF mailbox
*/ */
s32 e1000_init_mbx_params_vf(struct e1000_hw *hw) s32 e1000_init_mbx_params_vf(struct e1000_hw *hw)
{ {
struct e1000_mbx_info *mbx = &hw->mbx; struct e1000_mbx_info *mbx = &hw->mbx;
/* start mailbox as timed out and let the reset_hw call set the timeout /* start mailbox as timed out and let the reset_hw call set the timeout
* value to being communications */ * value to being communications
*/
mbx->timeout = 0; mbx->timeout = 0;
mbx->usec_delay = E1000_VF_MBX_INIT_DELAY; mbx->usec_delay = E1000_VF_MBX_INIT_DELAY;
...@@ -347,4 +347,3 @@ s32 e1000_init_mbx_params_vf(struct e1000_hw *hw) ...@@ -347,4 +347,3 @@ s32 e1000_init_mbx_params_vf(struct e1000_hw *hw)
return E1000_SUCCESS; return E1000_SUCCESS;
} }
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -30,44 +29,44 @@ ...@@ -30,44 +29,44 @@
#include "vf.h" #include "vf.h"
#define E1000_V2PMAILBOX_REQ 0x00000001 /* Request for PF Ready bit */ #define E1000_V2PMAILBOX_REQ 0x00000001 /* Request for PF Ready bit */
#define E1000_V2PMAILBOX_ACK 0x00000002 /* Ack PF message received */ #define E1000_V2PMAILBOX_ACK 0x00000002 /* Ack PF message received */
#define E1000_V2PMAILBOX_VFU 0x00000004 /* VF owns the mailbox buffer */ #define E1000_V2PMAILBOX_VFU 0x00000004 /* VF owns the mailbox buffer */
#define E1000_V2PMAILBOX_PFU 0x00000008 /* PF owns the mailbox buffer */ #define E1000_V2PMAILBOX_PFU 0x00000008 /* PF owns the mailbox buffer */
#define E1000_V2PMAILBOX_PFSTS 0x00000010 /* PF wrote a message in the MB */ #define E1000_V2PMAILBOX_PFSTS 0x00000010 /* PF wrote a message in the MB */
#define E1000_V2PMAILBOX_PFACK 0x00000020 /* PF ack the previous VF msg */ #define E1000_V2PMAILBOX_PFACK 0x00000020 /* PF ack the previous VF msg */
#define E1000_V2PMAILBOX_RSTI 0x00000040 /* PF has reset indication */ #define E1000_V2PMAILBOX_RSTI 0x00000040 /* PF has reset indication */
#define E1000_V2PMAILBOX_RSTD 0x00000080 /* PF has indicated reset done */ #define E1000_V2PMAILBOX_RSTD 0x00000080 /* PF has indicated reset done */
#define E1000_V2PMAILBOX_R2C_BITS 0x000000B0 /* All read to clear bits */ #define E1000_V2PMAILBOX_R2C_BITS 0x000000B0 /* All read to clear bits */
#define E1000_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */ #define E1000_VFMAILBOX_SIZE 16 /* 16 32 bit words - 64 bytes */
/* If it's a E1000_VF_* msg then it originates in the VF and is sent to the /* If it's a E1000_VF_* msg then it originates in the VF and is sent to the
* PF. The reverse is true if it is E1000_PF_*. * PF. The reverse is true if it is E1000_PF_*.
* Message ACK's are the value or'd with 0xF0000000 * Message ACK's are the value or'd with 0xF0000000
*/ */
#define E1000_VT_MSGTYPE_ACK 0x80000000 /* Messages below or'd with /* Messages below or'd with this are the ACK */
* this are the ACK */ #define E1000_VT_MSGTYPE_ACK 0x80000000
#define E1000_VT_MSGTYPE_NACK 0x40000000 /* Messages below or'd with /* Messages below or'd with this are the NACK */
* this are the NACK */ #define E1000_VT_MSGTYPE_NACK 0x40000000
#define E1000_VT_MSGTYPE_CTS 0x20000000 /* Indicates that VF is still /* Indicates that VF is still clear to send requests */
clear to send requests */ #define E1000_VT_MSGTYPE_CTS 0x20000000
/* We have a total wait time of 1s for vf mailbox posted messages */ /* We have a total wait time of 1s for vf mailbox posted messages */
#define E1000_VF_MBX_INIT_TIMEOUT 2000 /* retry count for mailbox timeout */ #define E1000_VF_MBX_INIT_TIMEOUT 2000 /* retry count for mbx timeout */
#define E1000_VF_MBX_INIT_DELAY 500 /* usec delay between retries */ #define E1000_VF_MBX_INIT_DELAY 500 /* usec delay between retries */
#define E1000_VT_MSGINFO_SHIFT 16 #define E1000_VT_MSGINFO_SHIFT 16
/* bits 23:16 are used for exra info for certain messages */ /* bits 23:16 are used for exra info for certain messages */
#define E1000_VT_MSGINFO_MASK (0xFF << E1000_VT_MSGINFO_SHIFT) #define E1000_VT_MSGINFO_MASK (0xFF << E1000_VT_MSGINFO_SHIFT)
#define E1000_VF_RESET 0x01 /* VF requests reset */ #define E1000_VF_RESET 0x01 /* VF requests reset */
#define E1000_VF_SET_MAC_ADDR 0x02 /* VF requests PF to set MAC addr */ #define E1000_VF_SET_MAC_ADDR 0x02 /* VF requests PF to set MAC addr */
#define E1000_VF_SET_MULTICAST 0x03 /* VF requests PF to set MC addr */ #define E1000_VF_SET_MULTICAST 0x03 /* VF requests PF to set MC addr */
#define E1000_VF_SET_VLAN 0x04 /* VF requests PF to set VLAN */ #define E1000_VF_SET_VLAN 0x04 /* VF requests PF to set VLAN */
#define E1000_VF_SET_LPE 0x05 /* VF requests PF to set VMOLR.LPE */ #define E1000_VF_SET_LPE 0x05 /* VF requests PF to set VMOLR.LPE */
#define E1000_PF_CONTROL_MSG 0x0100 /* PF control message */ #define E1000_PF_CONTROL_MSG 0x0100 /* PF control message */
void e1000_init_mbx_ops_generic(struct e1000_hw *hw); void e1000_init_mbx_ops_generic(struct e1000_hw *hw);
s32 e1000_init_mbx_params_vf(struct e1000_hw *); s32 e1000_init_mbx_params_vf(struct e1000_hw *);
......
This diff is collapsed.
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -28,81 +27,81 @@ ...@@ -28,81 +27,81 @@
#ifndef _E1000_REGS_H_ #ifndef _E1000_REGS_H_
#define _E1000_REGS_H_ #define _E1000_REGS_H_
#define E1000_CTRL 0x00000 /* Device Control - RW */ #define E1000_CTRL 0x00000 /* Device Control - RW */
#define E1000_STATUS 0x00008 /* Device Status - RO */ #define E1000_STATUS 0x00008 /* Device Status - RO */
#define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */ #define E1000_ITR 0x000C4 /* Interrupt Throttling Rate - RW */
#define E1000_EICR 0x01580 /* Ext. Interrupt Cause Read - R/clr */ #define E1000_EICR 0x01580 /* Ext. Interrupt Cause Read - R/clr */
#define E1000_EITR(_n) (0x01680 + (0x4 * (_n))) #define E1000_EITR(_n) (0x01680 + (0x4 * (_n)))
#define E1000_EICS 0x01520 /* Ext. Interrupt Cause Set - W0 */ #define E1000_EICS 0x01520 /* Ext. Interrupt Cause Set - W0 */
#define E1000_EIMS 0x01524 /* Ext. Interrupt Mask Set/Read - RW */ #define E1000_EIMS 0x01524 /* Ext. Interrupt Mask Set/Read - RW */
#define E1000_EIMC 0x01528 /* Ext. Interrupt Mask Clear - WO */ #define E1000_EIMC 0x01528 /* Ext. Interrupt Mask Clear - WO */
#define E1000_EIAC 0x0152C /* Ext. Interrupt Auto Clear - RW */ #define E1000_EIAC 0x0152C /* Ext. Interrupt Auto Clear - RW */
#define E1000_EIAM 0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */ #define E1000_EIAM 0x01530 /* Ext. Interrupt Ack Auto Clear Mask - RW */
#define E1000_IVAR0 0x01700 /* Interrupt Vector Allocation (array) - RW */ #define E1000_IVAR0 0x01700 /* Interrupt Vector Allocation (array) - RW */
#define E1000_IVAR_MISC 0x01740 /* IVAR for "other" causes - RW */ #define E1000_IVAR_MISC 0x01740 /* IVAR for "other" causes - RW */
/*
* Convenience macros /* Convenience macros
* *
* Note: "_n" is the queue number of the register to be written to. * Note: "_n" is the queue number of the register to be written to.
* *
* Example usage: * Example usage:
* E1000_RDBAL_REG(current_rx_queue) * E1000_RDBAL_REG(current_rx_queue)
*/ */
#define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \ #define E1000_RDBAL(_n) ((_n) < 4 ? (0x02800 + ((_n) * 0x100)) : \
(0x0C000 + ((_n) * 0x40))) (0x0C000 + ((_n) * 0x40)))
#define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \ #define E1000_RDBAH(_n) ((_n) < 4 ? (0x02804 + ((_n) * 0x100)) : \
(0x0C004 + ((_n) * 0x40))) (0x0C004 + ((_n) * 0x40)))
#define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \ #define E1000_RDLEN(_n) ((_n) < 4 ? (0x02808 + ((_n) * 0x100)) : \
(0x0C008 + ((_n) * 0x40))) (0x0C008 + ((_n) * 0x40)))
#define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \ #define E1000_SRRCTL(_n) ((_n) < 4 ? (0x0280C + ((_n) * 0x100)) : \
(0x0C00C + ((_n) * 0x40))) (0x0C00C + ((_n) * 0x40)))
#define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \ #define E1000_RDH(_n) ((_n) < 4 ? (0x02810 + ((_n) * 0x100)) : \
(0x0C010 + ((_n) * 0x40))) (0x0C010 + ((_n) * 0x40)))
#define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \ #define E1000_RDT(_n) ((_n) < 4 ? (0x02818 + ((_n) * 0x100)) : \
(0x0C018 + ((_n) * 0x40))) (0x0C018 + ((_n) * 0x40)))
#define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \ #define E1000_RXDCTL(_n) ((_n) < 4 ? (0x02828 + ((_n) * 0x100)) : \
(0x0C028 + ((_n) * 0x40))) (0x0C028 + ((_n) * 0x40)))
#define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \ #define E1000_TDBAL(_n) ((_n) < 4 ? (0x03800 + ((_n) * 0x100)) : \
(0x0E000 + ((_n) * 0x40))) (0x0E000 + ((_n) * 0x40)))
#define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \ #define E1000_TDBAH(_n) ((_n) < 4 ? (0x03804 + ((_n) * 0x100)) : \
(0x0E004 + ((_n) * 0x40))) (0x0E004 + ((_n) * 0x40)))
#define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \ #define E1000_TDLEN(_n) ((_n) < 4 ? (0x03808 + ((_n) * 0x100)) : \
(0x0E008 + ((_n) * 0x40))) (0x0E008 + ((_n) * 0x40)))
#define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \ #define E1000_TDH(_n) ((_n) < 4 ? (0x03810 + ((_n) * 0x100)) : \
(0x0E010 + ((_n) * 0x40))) (0x0E010 + ((_n) * 0x40)))
#define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \ #define E1000_TDT(_n) ((_n) < 4 ? (0x03818 + ((_n) * 0x100)) : \
(0x0E018 + ((_n) * 0x40))) (0x0E018 + ((_n) * 0x40)))
#define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \ #define E1000_TXDCTL(_n) ((_n) < 4 ? (0x03828 + ((_n) * 0x100)) : \
(0x0E028 + ((_n) * 0x40))) (0x0E028 + ((_n) * 0x40)))
#define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8)) #define E1000_DCA_TXCTRL(_n) (0x03814 + (_n << 8))
#define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8)) #define E1000_DCA_RXCTRL(_n) (0x02814 + (_n << 8))
#define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \ #define E1000_RAL(_i) (((_i) <= 15) ? (0x05400 + ((_i) * 8)) : \
(0x054E0 + ((_i - 16) * 8))) (0x054E0 + ((_i - 16) * 8)))
#define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \ #define E1000_RAH(_i) (((_i) <= 15) ? (0x05404 + ((_i) * 8)) : \
(0x054E4 + ((_i - 16) * 8))) (0x054E4 + ((_i - 16) * 8)))
/* Statistics registers */ /* Statistics registers */
#define E1000_VFGPRC 0x00F10 #define E1000_VFGPRC 0x00F10
#define E1000_VFGORC 0x00F18 #define E1000_VFGORC 0x00F18
#define E1000_VFMPRC 0x00F3C #define E1000_VFMPRC 0x00F3C
#define E1000_VFGPTC 0x00F14 #define E1000_VFGPTC 0x00F14
#define E1000_VFGOTC 0x00F34 #define E1000_VFGOTC 0x00F34
#define E1000_VFGOTLBC 0x00F50 #define E1000_VFGOTLBC 0x00F50
#define E1000_VFGPTLBC 0x00F44 #define E1000_VFGPTLBC 0x00F44
#define E1000_VFGORLBC 0x00F48 #define E1000_VFGORLBC 0x00F48
#define E1000_VFGPRLBC 0x00F40 #define E1000_VFGPRLBC 0x00F40
/* These act per VF so an array friendly macro is used */ /* These act per VF so an array friendly macro is used */
#define E1000_V2PMAILBOX(_n) (0x00C40 + (4 * (_n))) #define E1000_V2PMAILBOX(_n) (0x00C40 + (4 * (_n)))
#define E1000_VMBMEM(_n) (0x00800 + (64 * (_n))) #define E1000_VMBMEM(_n) (0x00800 + (64 * (_n)))
/* Define macros for handling registers */ /* Define macros for handling registers */
#define er32(reg) readl(hw->hw_addr + E1000_##reg) #define er32(reg) readl(hw->hw_addr + E1000_##reg)
#define ew32(reg, val) writel((val), hw->hw_addr + E1000_##reg) #define ew32(reg, val) writel((val), hw->hw_addr + E1000_##reg)
#define array_er32(reg, offset) \ #define array_er32(reg, offset) \
readl(hw->hw_addr + E1000_##reg + (offset << 2)) readl(hw->hw_addr + E1000_##reg + (offset << 2))
#define array_ew32(reg, offset, val) \ #define array_ew32(reg, offset, val) \
writel((val), hw->hw_addr + E1000_##reg + (offset << 2)) writel((val), hw->hw_addr + E1000_##reg + (offset << 2))
#define e1e_flush() er32(STATUS) #define e1e_flush() er32(STATUS)
#endif #endif
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -25,17 +24,16 @@ ...@@ -25,17 +24,16 @@
*******************************************************************************/ *******************************************************************************/
#include "vf.h" #include "vf.h"
static s32 e1000_check_for_link_vf(struct e1000_hw *hw); static s32 e1000_check_for_link_vf(struct e1000_hw *hw);
static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed, static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
u16 *duplex); u16 *duplex);
static s32 e1000_init_hw_vf(struct e1000_hw *hw); static s32 e1000_init_hw_vf(struct e1000_hw *hw);
static s32 e1000_reset_hw_vf(struct e1000_hw *hw); static s32 e1000_reset_hw_vf(struct e1000_hw *hw);
static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *, static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, u8 *,
u32, u32, u32); u32, u32, u32);
static void e1000_rar_set_vf(struct e1000_hw *, u8 *, u32); static void e1000_rar_set_vf(struct e1000_hw *, u8 *, u32);
static s32 e1000_read_mac_addr_vf(struct e1000_hw *); static s32 e1000_read_mac_addr_vf(struct e1000_hw *);
static s32 e1000_set_vfta_vf(struct e1000_hw *, u16, bool); static s32 e1000_set_vfta_vf(struct e1000_hw *, u16, bool);
...@@ -94,7 +92,7 @@ void e1000_init_function_pointers_vf(struct e1000_hw *hw) ...@@ -94,7 +92,7 @@ void e1000_init_function_pointers_vf(struct e1000_hw *hw)
* the status register's data which is often stale and inaccurate. * the status register's data which is often stale and inaccurate.
**/ **/
static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed, static s32 e1000_get_link_up_info_vf(struct e1000_hw *hw, u16 *speed,
u16 *duplex) u16 *duplex)
{ {
s32 status; s32 status;
...@@ -130,7 +128,7 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw) ...@@ -130,7 +128,7 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
u8 *addr = (u8 *)(&msgbuf[1]); u8 *addr = (u8 *)(&msgbuf[1]);
u32 ctrl; u32 ctrl;
/* assert vf queue/interrupt reset */ /* assert VF queue/interrupt reset */
ctrl = er32(CTRL); ctrl = er32(CTRL);
ew32(CTRL, ctrl | E1000_CTRL_RST); ew32(CTRL, ctrl | E1000_CTRL_RST);
...@@ -144,7 +142,7 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw) ...@@ -144,7 +142,7 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
/* mailbox timeout can now become active */ /* mailbox timeout can now become active */
mbx->timeout = E1000_VF_MBX_INIT_TIMEOUT; mbx->timeout = E1000_VF_MBX_INIT_TIMEOUT;
/* notify pf of vf reset completion */ /* notify PF of VF reset completion */
msgbuf[0] = E1000_VF_RESET; msgbuf[0] = E1000_VF_RESET;
mbx->ops.write_posted(hw, msgbuf, 1); mbx->ops.write_posted(hw, msgbuf, 1);
...@@ -153,7 +151,8 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw) ...@@ -153,7 +151,8 @@ static s32 e1000_reset_hw_vf(struct e1000_hw *hw)
/* set our "perm_addr" based on info provided by PF */ /* set our "perm_addr" based on info provided by PF */
ret_val = mbx->ops.read_posted(hw, msgbuf, 3); ret_val = mbx->ops.read_posted(hw, msgbuf, 3);
if (!ret_val) { if (!ret_val) {
if (msgbuf[0] == (E1000_VF_RESET | E1000_VT_MSGTYPE_ACK)) if (msgbuf[0] == (E1000_VF_RESET |
E1000_VT_MSGTYPE_ACK))
memcpy(hw->mac.perm_addr, addr, ETH_ALEN); memcpy(hw->mac.perm_addr, addr, ETH_ALEN);
else else
ret_val = -E1000_ERR_MAC_INIT; ret_val = -E1000_ERR_MAC_INIT;
...@@ -194,15 +193,14 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr) ...@@ -194,15 +193,14 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr)
/* Register count multiplied by bits per register */ /* Register count multiplied by bits per register */
hash_mask = (hw->mac.mta_reg_count * 32) - 1; hash_mask = (hw->mac.mta_reg_count * 32) - 1;
/* /* The bit_shift is the number of left-shifts
* The bit_shift is the number of left-shifts
* where 0xFF would still fall within the hash mask. * where 0xFF would still fall within the hash mask.
*/ */
while (hash_mask >> bit_shift != 0xFF) while (hash_mask >> bit_shift != 0xFF)
bit_shift++; bit_shift++;
hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) | hash_value = hash_mask & (((mc_addr[4] >> (8 - bit_shift)) |
(((u16) mc_addr[5]) << bit_shift))); (((u16)mc_addr[5]) << bit_shift)));
return hash_value; return hash_value;
} }
...@@ -221,8 +219,8 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr) ...@@ -221,8 +219,8 @@ static u32 e1000_hash_mc_addr_vf(struct e1000_hw *hw, u8 *mc_addr)
* unless there are workarounds that change this. * unless there are workarounds that change this.
**/ **/
static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw, static void e1000_update_mc_addr_list_vf(struct e1000_hw *hw,
u8 *mc_addr_list, u32 mc_addr_count, u8 *mc_addr_list, u32 mc_addr_count,
u32 rar_used_count, u32 rar_count) u32 rar_used_count, u32 rar_count)
{ {
struct e1000_mbx_info *mbx = &hw->mbx; struct e1000_mbx_info *mbx = &hw->mbx;
u32 msgbuf[E1000_VFMAILBOX_SIZE]; u32 msgbuf[E1000_VFMAILBOX_SIZE];
...@@ -305,7 +303,7 @@ void e1000_rlpml_set_vf(struct e1000_hw *hw, u16 max_size) ...@@ -305,7 +303,7 @@ void e1000_rlpml_set_vf(struct e1000_hw *hw, u16 max_size)
* @addr: pointer to the receive address * @addr: pointer to the receive address
* @index: receive address array register * @index: receive address array register
**/ **/
static void e1000_rar_set_vf(struct e1000_hw *hw, u8 * addr, u32 index) static void e1000_rar_set_vf(struct e1000_hw *hw, u8 *addr, u32 index)
{ {
struct e1000_mbx_info *mbx = &hw->mbx; struct e1000_mbx_info *mbx = &hw->mbx;
u32 msgbuf[3]; u32 msgbuf[3];
...@@ -354,8 +352,7 @@ static s32 e1000_check_for_link_vf(struct e1000_hw *hw) ...@@ -354,8 +352,7 @@ static s32 e1000_check_for_link_vf(struct e1000_hw *hw)
s32 ret_val = E1000_SUCCESS; s32 ret_val = E1000_SUCCESS;
u32 in_msg = 0; u32 in_msg = 0;
/* /* We only want to run this if there has been a rst asserted.
* We only want to run this if there has been a rst asserted.
* in this case that could mean a link change, device reset, * in this case that could mean a link change, device reset,
* or a virtual function reset * or a virtual function reset
*/ */
...@@ -367,31 +364,33 @@ static s32 e1000_check_for_link_vf(struct e1000_hw *hw) ...@@ -367,31 +364,33 @@ static s32 e1000_check_for_link_vf(struct e1000_hw *hw)
if (!mac->get_link_status) if (!mac->get_link_status)
goto out; goto out;
/* if link status is down no point in checking to see if pf is up */ /* if link status is down no point in checking to see if PF is up */
if (!(er32(STATUS) & E1000_STATUS_LU)) if (!(er32(STATUS) & E1000_STATUS_LU))
goto out; goto out;
/* if the read failed it could just be a mailbox collision, best wait /* if the read failed it could just be a mailbox collision, best wait
* until we are called again and don't report an error */ * until we are called again and don't report an error
*/
if (mbx->ops.read(hw, &in_msg, 1)) if (mbx->ops.read(hw, &in_msg, 1))
goto out; goto out;
/* if incoming message isn't clear to send we are waiting on response */ /* if incoming message isn't clear to send we are waiting on response */
if (!(in_msg & E1000_VT_MSGTYPE_CTS)) { if (!(in_msg & E1000_VT_MSGTYPE_CTS)) {
/* message is not CTS and is NACK we must have lost CTS status */ /* msg is not CTS and is NACK we must have lost CTS status */
if (in_msg & E1000_VT_MSGTYPE_NACK) if (in_msg & E1000_VT_MSGTYPE_NACK)
ret_val = -E1000_ERR_MAC_INIT; ret_val = -E1000_ERR_MAC_INIT;
goto out; goto out;
} }
/* the pf is talking, if we timed out in the past we reinit */ /* the PF is talking, if we timed out in the past we reinit */
if (!mbx->timeout) { if (!mbx->timeout) {
ret_val = -E1000_ERR_MAC_INIT; ret_val = -E1000_ERR_MAC_INIT;
goto out; goto out;
} }
/* if we passed all the tests above then the link is up and we no /* if we passed all the tests above then the link is up and we no
* longer need to check for link */ * longer need to check for link
*/
mac->get_link_status = false; mac->get_link_status = false;
out: out:
......
...@@ -13,8 +13,7 @@ ...@@ -13,8 +13,7 @@
more details. more details.
You should have received a copy of the GNU General Public License along with You should have received a copy of the GNU General Public License along with
this program; if not, write to the Free Software Foundation, Inc., this program; if not, see <http://www.gnu.org/licenses/>.
51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
The full GNU General Public License is included in this distribution in The full GNU General Public License is included in this distribution in
the file called "COPYING". the file called "COPYING".
...@@ -38,30 +37,29 @@ ...@@ -38,30 +37,29 @@
struct e1000_hw; struct e1000_hw;
#define E1000_DEV_ID_82576_VF 0x10CA #define E1000_DEV_ID_82576_VF 0x10CA
#define E1000_DEV_ID_I350_VF 0x1520 #define E1000_DEV_ID_I350_VF 0x1520
#define E1000_REVISION_0 0 #define E1000_REVISION_0 0
#define E1000_REVISION_1 1 #define E1000_REVISION_1 1
#define E1000_REVISION_2 2 #define E1000_REVISION_2 2
#define E1000_REVISION_3 3 #define E1000_REVISION_3 3
#define E1000_REVISION_4 4 #define E1000_REVISION_4 4
#define E1000_FUNC_0 0 #define E1000_FUNC_0 0
#define E1000_FUNC_1 1 #define E1000_FUNC_1 1
/* /* Receive Address Register Count
* Receive Address Register Count
* Number of high/low register pairs in the RAR. The RAR (Receive Address * Number of high/low register pairs in the RAR. The RAR (Receive Address
* Registers) holds the directed and multicast addresses that we monitor. * Registers) holds the directed and multicast addresses that we monitor.
* These entries are also used for MAC-based filtering. * These entries are also used for MAC-based filtering.
*/ */
#define E1000_RAR_ENTRIES_VF 1 #define E1000_RAR_ENTRIES_VF 1
/* Receive Descriptor - Advanced */ /* Receive Descriptor - Advanced */
union e1000_adv_rx_desc { union e1000_adv_rx_desc {
struct { struct {
u64 pkt_addr; /* Packet buffer address */ u64 pkt_addr; /* Packet buffer address */
u64 hdr_addr; /* Header buffer address */ u64 hdr_addr; /* Header buffer address */
} read; } read;
struct { struct {
struct { struct {
...@@ -69,53 +67,53 @@ union e1000_adv_rx_desc { ...@@ -69,53 +67,53 @@ union e1000_adv_rx_desc {
u32 data; u32 data;
struct { struct {
u16 pkt_info; /* RSS/Packet type */ u16 pkt_info; /* RSS/Packet type */
u16 hdr_info; /* Split Header, /* Split Header, hdr buffer length */
* hdr buffer length */ u16 hdr_info;
} hs_rss; } hs_rss;
} lo_dword; } lo_dword;
union { union {
u32 rss; /* RSS Hash */ u32 rss; /* RSS Hash */
struct { struct {
u16 ip_id; /* IP id */ u16 ip_id; /* IP id */
u16 csum; /* Packet Checksum */ u16 csum; /* Packet Checksum */
} csum_ip; } csum_ip;
} hi_dword; } hi_dword;
} lower; } lower;
struct { struct {
u32 status_error; /* ext status/error */ u32 status_error; /* ext status/error */
u16 length; /* Packet length */ u16 length; /* Packet length */
u16 vlan; /* VLAN tag */ u16 vlan; /* VLAN tag */
} upper; } upper;
} wb; /* writeback */ } wb; /* writeback */
}; };
#define E1000_RXDADV_HDRBUFLEN_MASK 0x7FE0 #define E1000_RXDADV_HDRBUFLEN_MASK 0x7FE0
#define E1000_RXDADV_HDRBUFLEN_SHIFT 5 #define E1000_RXDADV_HDRBUFLEN_SHIFT 5
/* Transmit Descriptor - Advanced */ /* Transmit Descriptor - Advanced */
union e1000_adv_tx_desc { union e1000_adv_tx_desc {
struct { struct {
u64 buffer_addr; /* Address of descriptor's data buf */ u64 buffer_addr; /* Address of descriptor's data buf */
u32 cmd_type_len; u32 cmd_type_len;
u32 olinfo_status; u32 olinfo_status;
} read; } read;
struct { struct {
u64 rsvd; /* Reserved */ u64 rsvd; /* Reserved */
u32 nxtseq_seed; u32 nxtseq_seed;
u32 status; u32 status;
} wb; } wb;
}; };
/* Adv Transmit Descriptor Config Masks */ /* Adv Transmit Descriptor Config Masks */
#define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */ #define E1000_ADVTXD_DTYP_CTXT 0x00200000 /* Advanced Context Descriptor */
#define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */ #define E1000_ADVTXD_DTYP_DATA 0x00300000 /* Advanced Data Descriptor */
#define E1000_ADVTXD_DCMD_EOP 0x01000000 /* End of Packet */ #define E1000_ADVTXD_DCMD_EOP 0x01000000 /* End of Packet */
#define E1000_ADVTXD_DCMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */ #define E1000_ADVTXD_DCMD_IFCS 0x02000000 /* Insert FCS (Ethernet CRC) */
#define E1000_ADVTXD_DCMD_RS 0x08000000 /* Report Status */ #define E1000_ADVTXD_DCMD_RS 0x08000000 /* Report Status */
#define E1000_ADVTXD_DCMD_DEXT 0x20000000 /* Descriptor extension (1=Adv) */ #define E1000_ADVTXD_DCMD_DEXT 0x20000000 /* Descriptor extension (1=Adv) */
#define E1000_ADVTXD_DCMD_VLE 0x40000000 /* VLAN pkt enable */ #define E1000_ADVTXD_DCMD_VLE 0x40000000 /* VLAN pkt enable */
#define E1000_ADVTXD_DCMD_TSE 0x80000000 /* TCP Seg enable */ #define E1000_ADVTXD_DCMD_TSE 0x80000000 /* TCP Seg enable */
#define E1000_ADVTXD_PAYLEN_SHIFT 14 /* Adv desc PAYLEN shift */ #define E1000_ADVTXD_PAYLEN_SHIFT 14 /* Adv desc PAYLEN shift */
/* Context descriptors */ /* Context descriptors */
struct e1000_adv_tx_context_desc { struct e1000_adv_tx_context_desc {
...@@ -125,11 +123,11 @@ struct e1000_adv_tx_context_desc { ...@@ -125,11 +123,11 @@ struct e1000_adv_tx_context_desc {
u32 mss_l4len_idx; u32 mss_l4len_idx;
}; };
#define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */ #define E1000_ADVTXD_MACLEN_SHIFT 9 /* Adv ctxt desc mac len shift */
#define E1000_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type: 1=IPv4 */ #define E1000_ADVTXD_TUCMD_IPV4 0x00000400 /* IP Packet Type: 1=IPv4 */
#define E1000_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */ #define E1000_ADVTXD_TUCMD_L4T_TCP 0x00000800 /* L4 Packet TYPE of TCP */
#define E1000_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */ #define E1000_ADVTXD_L4LEN_SHIFT 8 /* Adv ctxt L4LEN shift */
#define E1000_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */ #define E1000_ADVTXD_MSS_SHIFT 16 /* Adv ctxt MSS shift */
enum e1000_mac_type { enum e1000_mac_type {
e1000_undefined = 0, e1000_undefined = 0,
...@@ -262,5 +260,4 @@ struct e1000_hw { ...@@ -262,5 +260,4 @@ struct e1000_hw {
void e1000_rlpml_set_vf(struct e1000_hw *, u16); void e1000_rlpml_set_vf(struct e1000_hw *, u16);
void e1000_init_function_pointers_vf(struct e1000_hw *hw); void e1000_init_function_pointers_vf(struct e1000_hw *hw);
#endif /* _E1000_VF_H_ */ #endif /* _E1000_VF_H_ */
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment