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".
...@@ -55,7 +54,6 @@ ...@@ -55,7 +54,6 @@
#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 | \
...@@ -84,8 +82,8 @@ ...@@ -84,8 +82,8 @@
/* 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
...@@ -111,8 +109,8 @@ ...@@ -111,8 +109,8 @@
#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 */
......
...@@ -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;
...@@ -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;
} }
...@@ -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);
...@@ -313,8 +312,7 @@ static void igbvf_diag_test(struct net_device *netdev, ...@@ -313,8 +312,7 @@ static void igbvf_diag_test(struct net_device *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]))
...@@ -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,12 +386,12 @@ static int igbvf_set_coalesce(struct net_device *netdev, ...@@ -388,12 +386,12 @@ 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)
...@@ -411,12 +409,11 @@ static void igbvf_get_ethtool_stats(struct net_device *netdev, ...@@ -411,12 +409,11 @@ static void igbvf_get_ethtool_stats(struct net_device *netdev,
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:
......
...@@ -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".
...@@ -55,7 +54,6 @@ enum latency_range { ...@@ -55,7 +54,6 @@ 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
...@@ -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 {
...@@ -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;
......
...@@ -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)
{ {
...@@ -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".
...@@ -46,15 +45,15 @@ ...@@ -46,15 +45,15 @@
* 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
......
...@@ -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".
...@@ -86,6 +85,7 @@ static const struct igbvf_info *igbvf_info_tbl[] = { ...@@ -86,6 +85,7 @@ static const struct igbvf_info *igbvf_info_tbl[] = {
/** /**
* igbvf_desc_unused - calculate if we have unused descriptors * igbvf_desc_unused - calculate if we have unused descriptors
* @rx_ring: address of receive ring structure
**/ **/
static int igbvf_desc_unused(struct igbvf_ring *ring) static int igbvf_desc_unused(struct igbvf_ring *ring)
{ {
...@@ -219,14 +219,14 @@ static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring, ...@@ -219,14 +219,14 @@ static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring,
} }
} }
/* Refresh the desc even if buffer_addrs didn't change because /* Refresh the desc even if buffer_addrs didn't change because
* each write-back erases this info. */ * each write-back erases this info.
*/
if (adapter->rx_ps_hdr_size) { if (adapter->rx_ps_hdr_size) {
rx_desc->read.pkt_addr = rx_desc->read.pkt_addr =
cpu_to_le64(buffer_info->page_dma); cpu_to_le64(buffer_info->page_dma);
rx_desc->read.hdr_addr = cpu_to_le64(buffer_info->dma); rx_desc->read.hdr_addr = cpu_to_le64(buffer_info->dma);
} else { } else {
rx_desc->read.pkt_addr = rx_desc->read.pkt_addr = cpu_to_le64(buffer_info->dma);
cpu_to_le64(buffer_info->dma);
rx_desc->read.hdr_addr = 0; rx_desc->read.hdr_addr = 0;
} }
...@@ -247,7 +247,8 @@ static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring, ...@@ -247,7 +247,8 @@ static void igbvf_alloc_rx_buffers(struct igbvf_ring *rx_ring,
/* Force memory writes to complete before letting h/w /* Force memory writes to complete before letting h/w
* know there are new descriptors to fetch. (Only * know there are new descriptors to fetch. (Only
* applicable for weak-ordered memory model archs, * applicable for weak-ordered memory model archs,
* such as IA-64). */ * such as IA-64).
*/
wmb(); wmb();
writel(i, adapter->hw.hw_addr + rx_ring->tail); writel(i, adapter->hw.hw_addr + rx_ring->tail);
} }
...@@ -292,8 +293,9 @@ static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter, ...@@ -292,8 +293,9 @@ static bool igbvf_clean_rx_irq(struct igbvf_adapter *adapter,
* that case, it fills the header buffer and spills the rest * that case, it fills the header buffer and spills the rest
* into the page. * into the page.
*/ */
hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.hdr_info) & hlen = (le16_to_cpu(rx_desc->wb.lower.lo_dword.hs_rss.hdr_info)
E1000_RXDADV_HDRBUFLEN_MASK) >> E1000_RXDADV_HDRBUFLEN_SHIFT; & E1000_RXDADV_HDRBUFLEN_MASK) >>
E1000_RXDADV_HDRBUFLEN_SHIFT;
if (hlen > adapter->rx_ps_hdr_size) if (hlen > adapter->rx_ps_hdr_size)
hlen = adapter->rx_ps_hdr_size; hlen = adapter->rx_ps_hdr_size;
...@@ -578,7 +580,7 @@ static void igbvf_clean_rx_ring(struct igbvf_ring *rx_ring) ...@@ -578,7 +580,7 @@ static void igbvf_clean_rx_ring(struct igbvf_ring *rx_ring)
for (i = 0; i < rx_ring->count; i++) { for (i = 0; i < rx_ring->count; i++) {
buffer_info = &rx_ring->buffer_info[i]; buffer_info = &rx_ring->buffer_info[i];
if (buffer_info->dma) { if (buffer_info->dma) {
if (adapter->rx_ps_hdr_size){ if (adapter->rx_ps_hdr_size) {
dma_unmap_single(&pdev->dev, buffer_info->dma, dma_unmap_single(&pdev->dev, buffer_info->dma,
adapter->rx_ps_hdr_size, adapter->rx_ps_hdr_size,
DMA_FROM_DEVICE); DMA_FROM_DEVICE);
...@@ -649,13 +651,12 @@ void igbvf_free_rx_resources(struct igbvf_ring *rx_ring) ...@@ -649,13 +651,12 @@ void igbvf_free_rx_resources(struct igbvf_ring *rx_ring)
* @packets: the number of packets during this measurement interval * @packets: the number of packets during this measurement interval
* @bytes: the number of bytes during this measurement interval * @bytes: the number of bytes during this measurement interval
* *
* Stores a new ITR value based on packets and byte * Stores a new ITR value based on packets and byte counts during the last
* counts during the last interrupt. The advantage of per interrupt * interrupt. The advantage of per interrupt computation is faster updates
* computation is faster updates and more accurate ITR for the current * and more accurate ITR for the current traffic pattern. Constants in this
* traffic pattern. Constants in this function were computed * function were computed based on theoretical maximum wire speed and thresholds
* based on theoretical maximum wire speed and thresholds were set based * were set based on testing data as well as attempting to minimize response
* on testing data as well as attempting to minimize response time * time while increasing bulk throughput.
* while increasing bulk throughput.
**/ **/
static enum latency_range igbvf_update_itr(struct igbvf_adapter *adapter, static enum latency_range igbvf_update_itr(struct igbvf_adapter *adapter,
enum latency_range itr_setting, enum latency_range itr_setting,
...@@ -744,11 +745,9 @@ static void igbvf_set_itr(struct igbvf_adapter *adapter) ...@@ -744,11 +745,9 @@ static void igbvf_set_itr(struct igbvf_adapter *adapter)
new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range); new_itr = igbvf_range_to_itr(adapter->tx_ring->itr_range);
if (new_itr != adapter->tx_ring->itr_val) { if (new_itr != adapter->tx_ring->itr_val) {
u32 current_itr = adapter->tx_ring->itr_val; u32 current_itr = adapter->tx_ring->itr_val;
/* /* this attempts to bias the interrupt rate towards Bulk
* this attempts to bias the interrupt rate towards Bulk
* by adding intermediate steps when interrupt rate is * by adding intermediate steps when interrupt rate is
* increasing * increasing
*/ */
...@@ -772,6 +771,7 @@ static void igbvf_set_itr(struct igbvf_adapter *adapter) ...@@ -772,6 +771,7 @@ static void igbvf_set_itr(struct igbvf_adapter *adapter)
if (new_itr != adapter->rx_ring->itr_val) { if (new_itr != adapter->rx_ring->itr_val) {
u32 current_itr = adapter->rx_ring->itr_val; u32 current_itr = adapter->rx_ring->itr_val;
new_itr = new_itr > current_itr ? new_itr = new_itr > current_itr ?
min(current_itr + (new_itr >> 2), new_itr) : min(current_itr + (new_itr >> 2), new_itr) :
new_itr; new_itr;
...@@ -849,8 +849,7 @@ static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring) ...@@ -849,8 +849,7 @@ static bool igbvf_clean_tx_irq(struct igbvf_ring *tx_ring)
tx_ring->next_to_clean = i; tx_ring->next_to_clean = i;
if (unlikely(count && if (unlikely(count && netif_carrier_ok(netdev) &&
netif_carrier_ok(netdev) &&
igbvf_desc_unused(tx_ring) >= IGBVF_TX_QUEUE_WAKE)) { igbvf_desc_unused(tx_ring) >= IGBVF_TX_QUEUE_WAKE)) {
/* Make sure that anybody stopping the queue after this /* Make sure that anybody stopping the queue after this
* sees the new next_to_clean. * sees the new next_to_clean.
...@@ -902,8 +901,9 @@ static irqreturn_t igbvf_intr_msix_tx(int irq, void *data) ...@@ -902,8 +901,9 @@ static irqreturn_t igbvf_intr_msix_tx(int irq, void *data)
adapter->total_tx_bytes = 0; adapter->total_tx_bytes = 0;
adapter->total_tx_packets = 0; adapter->total_tx_packets = 0;
/* auto mask will automatically reenable the interrupt when we write /* auto mask will automatically re-enable the interrupt when we write
* EICS */ * EICS
*/
if (!igbvf_clean_tx_irq(tx_ring)) if (!igbvf_clean_tx_irq(tx_ring))
/* Ring was not completely cleaned, so fire another interrupt */ /* Ring was not completely cleaned, so fire another interrupt */
ew32(EICS, tx_ring->eims_value); ew32(EICS, tx_ring->eims_value);
...@@ -947,9 +947,10 @@ static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue, ...@@ -947,9 +947,10 @@ static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue,
u32 ivar, index; u32 ivar, index;
/* 82576 uses a table-based method for assigning vectors. /* 82576 uses a table-based method for assigning vectors.
Each queue has a single entry in the table to which we write * Each queue has a single entry in the table to which we write
a vector number along with a "valid" bit. Sadly, the layout * a vector number along with a "valid" bit. Sadly, the layout
of the table is somewhat counterintuitive. */ * of the table is somewhat counterintuitive.
*/
if (rx_queue > IGBVF_NO_QUEUE) { if (rx_queue > IGBVF_NO_QUEUE) {
index = (rx_queue >> 1); index = (rx_queue >> 1);
ivar = array_er32(IVAR0, index); ivar = array_er32(IVAR0, index);
...@@ -984,6 +985,7 @@ static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue, ...@@ -984,6 +985,7 @@ static void igbvf_assign_vector(struct igbvf_adapter *adapter, int rx_queue,
/** /**
* igbvf_configure_msix - Configure MSI-X hardware * igbvf_configure_msix - Configure MSI-X hardware
* @adapter: board private structure
* *
* igbvf_configure_msix sets up the hardware to properly * igbvf_configure_msix sets up the hardware to properly
* generate MSI-X interrupts. * generate MSI-X interrupts.
...@@ -1027,6 +1029,7 @@ static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter) ...@@ -1027,6 +1029,7 @@ static void igbvf_reset_interrupt_capability(struct igbvf_adapter *adapter)
/** /**
* igbvf_set_interrupt_capability - set MSI or MSI-X if supported * igbvf_set_interrupt_capability - set MSI or MSI-X if supported
* @adapter: board private structure
* *
* Attempt to configure interrupts using the best available * Attempt to configure interrupts using the best available
* capabilities of the hardware and kernel. * capabilities of the hardware and kernel.
...@@ -1036,7 +1039,7 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter) ...@@ -1036,7 +1039,7 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
int err = -ENOMEM; int err = -ENOMEM;
int i; int i;
/* we allocate 3 vectors, 1 for tx, 1 for rx, one for pf messages */ /* we allocate 3 vectors, 1 for Tx, 1 for Rx, one for PF messages */
adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry), adapter->msix_entries = kcalloc(3, sizeof(struct msix_entry),
GFP_KERNEL); GFP_KERNEL);
if (adapter->msix_entries) { if (adapter->msix_entries) {
...@@ -1057,6 +1060,7 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter) ...@@ -1057,6 +1060,7 @@ static void igbvf_set_interrupt_capability(struct igbvf_adapter *adapter)
/** /**
* igbvf_request_msix - Initialize MSI-X interrupts * igbvf_request_msix - Initialize MSI-X interrupts
* @adapter: board private structure
* *
* igbvf_request_msix allocates MSI-X vectors and requests interrupts from the * igbvf_request_msix allocates MSI-X vectors and requests interrupts from the
* kernel. * kernel.
...@@ -1130,6 +1134,7 @@ static int igbvf_alloc_queues(struct igbvf_adapter *adapter) ...@@ -1130,6 +1134,7 @@ static int igbvf_alloc_queues(struct igbvf_adapter *adapter)
/** /**
* igbvf_request_irq - initialize interrupts * igbvf_request_irq - initialize interrupts
* @adapter: board private structure
* *
* Attempts to configure interrupts using the best available * Attempts to configure interrupts using the best available
* capabilities of the hardware and kernel. * capabilities of the hardware and kernel.
...@@ -1164,6 +1169,7 @@ static void igbvf_free_irq(struct igbvf_adapter *adapter) ...@@ -1164,6 +1169,7 @@ static void igbvf_free_irq(struct igbvf_adapter *adapter)
/** /**
* igbvf_irq_disable - Mask off interrupt generation on the NIC * igbvf_irq_disable - Mask off interrupt generation on the NIC
* @adapter: board private structure
**/ **/
static void igbvf_irq_disable(struct igbvf_adapter *adapter) static void igbvf_irq_disable(struct igbvf_adapter *adapter)
{ {
...@@ -1177,6 +1183,7 @@ static void igbvf_irq_disable(struct igbvf_adapter *adapter) ...@@ -1177,6 +1183,7 @@ static void igbvf_irq_disable(struct igbvf_adapter *adapter)
/** /**
* igbvf_irq_enable - Enable default interrupt generation settings * igbvf_irq_enable - Enable default interrupt generation settings
* @adapter: board private structure
**/ **/
static void igbvf_irq_enable(struct igbvf_adapter *adapter) static void igbvf_irq_enable(struct igbvf_adapter *adapter)
{ {
...@@ -1298,7 +1305,7 @@ static void igbvf_configure_tx(struct igbvf_adapter *adapter) ...@@ -1298,7 +1305,7 @@ static void igbvf_configure_tx(struct igbvf_adapter *adapter)
/* Turn off Relaxed Ordering on head write-backs. The writebacks /* Turn off Relaxed Ordering on head write-backs. The writebacks
* MUST be delivered in order or it will completely screw up * MUST be delivered in order or it will completely screw up
* our bookeeping. * our bookkeeping.
*/ */
dca_txctrl = er32(DCA_TXCTRL(0)); dca_txctrl = er32(DCA_TXCTRL(0));
dca_txctrl &= ~E1000_DCA_TXCTRL_TX_WB_RO_EN; dca_txctrl &= ~E1000_DCA_TXCTRL_TX_WB_RO_EN;
...@@ -1369,8 +1376,7 @@ static void igbvf_configure_rx(struct igbvf_adapter *adapter) ...@@ -1369,8 +1376,7 @@ static void igbvf_configure_rx(struct igbvf_adapter *adapter)
rdlen = rx_ring->count * sizeof(union e1000_adv_rx_desc); rdlen = rx_ring->count * sizeof(union e1000_adv_rx_desc);
/* /* Setup the HW Rx Head and Tail Descriptor Pointers and
* Setup the HW Rx Head and Tail Descriptor Pointers and
* the Base and Length of the Rx Descriptor Ring * the Base and Length of the Rx Descriptor Ring
*/ */
rdba = rx_ring->dma; rdba = rx_ring->dma;
...@@ -1445,6 +1451,7 @@ static void igbvf_configure(struct igbvf_adapter *adapter) ...@@ -1445,6 +1451,7 @@ static void igbvf_configure(struct igbvf_adapter *adapter)
} }
/* igbvf_reset - bring the hardware into a known good state /* igbvf_reset - bring the hardware into a known good state
* @adapter: private board structure
* *
* This function boots the hardware and enables some settings that * This function boots the hardware and enables some settings that
* require a configuration cycle of the hardware - those cannot be * require a configuration cycle of the hardware - those cannot be
...@@ -1494,7 +1501,6 @@ int igbvf_up(struct igbvf_adapter *adapter) ...@@ -1494,7 +1501,6 @@ int igbvf_up(struct igbvf_adapter *adapter)
hw->mac.get_link_status = 1; hw->mac.get_link_status = 1;
mod_timer(&adapter->watchdog_timer, jiffies + 1); mod_timer(&adapter->watchdog_timer, jiffies + 1);
return 0; return 0;
} }
...@@ -1504,8 +1510,7 @@ void igbvf_down(struct igbvf_adapter *adapter) ...@@ -1504,8 +1510,7 @@ void igbvf_down(struct igbvf_adapter *adapter)
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
u32 rxdctl, txdctl; u32 rxdctl, txdctl;
/* /* signal that we're down so the interrupt handler does not
* signal that we're down so the interrupt handler does not
* reschedule our watchdog timer * reschedule our watchdog timer
*/ */
set_bit(__IGBVF_DOWN, &adapter->state); set_bit(__IGBVF_DOWN, &adapter->state);
...@@ -1662,8 +1667,7 @@ static int igbvf_open(struct net_device *netdev) ...@@ -1662,8 +1667,7 @@ static int igbvf_open(struct net_device *netdev)
if (err) if (err)
goto err_setup_rx; goto err_setup_rx;
/* /* before we allocate an interrupt, we must be ready to handle it.
* before we allocate an interrupt, we must be ready to handle it.
* Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt * Setting DEBUG_SHIRQ in the kernel makes it fire an interrupt
* as soon as we call pci_request_irq, so we have to setup our * as soon as we call pci_request_irq, so we have to setup our
* clean_rx handler before we do so. * clean_rx handler before we do so.
...@@ -1725,6 +1729,7 @@ static int igbvf_close(struct net_device *netdev) ...@@ -1725,6 +1729,7 @@ static int igbvf_close(struct net_device *netdev)
return 0; return 0;
} }
/** /**
* igbvf_set_mac - Change the Ethernet Address of the NIC * igbvf_set_mac - Change the Ethernet Address of the NIC
* @netdev: network interface device structure * @netdev: network interface device structure
...@@ -1754,14 +1759,14 @@ static int igbvf_set_mac(struct net_device *netdev, void *p) ...@@ -1754,14 +1759,14 @@ static int igbvf_set_mac(struct net_device *netdev, void *p)
} }
#define UPDATE_VF_COUNTER(reg, name) \ #define UPDATE_VF_COUNTER(reg, name) \
{ \ { \
u32 current_counter = er32(reg); \ u32 current_counter = er32(reg); \
if (current_counter < adapter->stats.last_##name) \ if (current_counter < adapter->stats.last_##name) \
adapter->stats.name += 0x100000000LL; \ adapter->stats.name += 0x100000000LL; \
adapter->stats.last_##name = current_counter; \ adapter->stats.last_##name = current_counter; \
adapter->stats.name &= 0xFFFFFFFF00000000LL; \ adapter->stats.name &= 0xFFFFFFFF00000000LL; \
adapter->stats.name |= current_counter; \ adapter->stats.name |= current_counter; \
} }
/** /**
* igbvf_update_stats - Update the board statistics counters * igbvf_update_stats - Update the board statistics counters
...@@ -1772,8 +1777,7 @@ void igbvf_update_stats(struct igbvf_adapter *adapter) ...@@ -1772,8 +1777,7 @@ void igbvf_update_stats(struct igbvf_adapter *adapter)
struct e1000_hw *hw = &adapter->hw; struct e1000_hw *hw = &adapter->hw;
struct pci_dev *pdev = adapter->pdev; struct pci_dev *pdev = adapter->pdev;
/* /* Prevent stats update while adapter is being reset, link is down
* Prevent stats update while adapter is being reset, link is down
* or if the pci connection is down. * or if the pci connection is down.
*/ */
if (adapter->link_speed == 0) if (adapter->link_speed == 0)
...@@ -1832,7 +1836,7 @@ static bool igbvf_has_link(struct igbvf_adapter *adapter) ...@@ -1832,7 +1836,7 @@ static bool igbvf_has_link(struct igbvf_adapter *adapter)
**/ **/
static void igbvf_watchdog(unsigned long data) static void igbvf_watchdog(unsigned long data)
{ {
struct igbvf_adapter *adapter = (struct igbvf_adapter *) data; struct igbvf_adapter *adapter = (struct igbvf_adapter *)data;
/* Do the rest outside of interrupt context */ /* Do the rest outside of interrupt context */
schedule_work(&adapter->watchdog_task); schedule_work(&adapter->watchdog_task);
...@@ -1878,8 +1882,7 @@ static void igbvf_watchdog_task(struct work_struct *work) ...@@ -1878,8 +1882,7 @@ static void igbvf_watchdog_task(struct work_struct *work)
tx_pending = (igbvf_desc_unused(tx_ring) + 1 < tx_pending = (igbvf_desc_unused(tx_ring) + 1 <
tx_ring->count); tx_ring->count);
if (tx_pending) { if (tx_pending) {
/* /* We've lost link, so the controller stops DMA,
* We've lost link, so the controller stops DMA,
* but we've got queued Tx work that's never going * but we've got queued Tx work that's never going
* to get done, so reset controller to flush Tx. * to get done, so reset controller to flush Tx.
* (Do the reset outside of interrupt context). * (Do the reset outside of interrupt context).
...@@ -1930,6 +1933,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter, ...@@ -1930,6 +1933,7 @@ static int igbvf_tso(struct igbvf_adapter *adapter,
if (protocol == htons(ETH_P_IP)) { if (protocol == htons(ETH_P_IP)) {
struct iphdr *iph = ip_hdr(skb); struct iphdr *iph = ip_hdr(skb);
iph->tot_len = 0; iph->tot_len = 0;
iph->check = 0; iph->check = 0;
tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr, tcp_hdr(skb)->check = ~csum_tcpudp_magic(iph->saddr,
...@@ -2007,7 +2011,6 @@ static inline bool igbvf_tx_csum(struct igbvf_adapter *adapter, ...@@ -2007,7 +2011,6 @@ static inline bool igbvf_tx_csum(struct igbvf_adapter *adapter,
info |= (skb_transport_header(skb) - info |= (skb_transport_header(skb) -
skb_network_header(skb)); skb_network_header(skb));
context_desc->vlan_macip_lens = cpu_to_le32(info); context_desc->vlan_macip_lens = cpu_to_le32(info);
tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT); tu_cmd |= (E1000_TXD_CMD_DEXT | E1000_ADVTXD_DTYP_CTXT);
...@@ -2055,6 +2058,10 @@ static int igbvf_maybe_stop_tx(struct net_device *netdev, int size) ...@@ -2055,6 +2058,10 @@ static int igbvf_maybe_stop_tx(struct net_device *netdev, int size)
netif_stop_queue(netdev); netif_stop_queue(netdev);
/* Herbert's original patch had:
* smp_mb__after_netif_stop_queue();
* but since that doesn't exist yet, just open code it.
*/
smp_mb(); smp_mb();
/* We need to check again just in case room has been made available */ /* We need to check again just in case room has been made available */
...@@ -2093,7 +2100,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, ...@@ -2093,7 +2100,6 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
if (dma_mapping_error(&pdev->dev, buffer_info->dma)) if (dma_mapping_error(&pdev->dev, buffer_info->dma))
goto dma_error; goto dma_error;
for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) { for (f = 0; f < skb_shinfo(skb)->nr_frags; f++) {
const struct skb_frag_struct *frag; const struct skb_frag_struct *frag;
...@@ -2133,7 +2139,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter, ...@@ -2133,7 +2139,7 @@ static inline int igbvf_tx_map_adv(struct igbvf_adapter *adapter,
/* clear timestamp and dma mappings for remaining portion of packet */ /* clear timestamp and dma mappings for remaining portion of packet */
while (count--) { while (count--) {
if (i==0) if (i == 0)
i += tx_ring->count; i += tx_ring->count;
i--; i--;
buffer_info = &tx_ring->buffer_info[i]; buffer_info = &tx_ring->buffer_info[i];
...@@ -2193,14 +2199,16 @@ static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter, ...@@ -2193,14 +2199,16 @@ static inline void igbvf_tx_queue_adv(struct igbvf_adapter *adapter,
/* Force memory writes to complete before letting h/w /* Force memory writes to complete before letting h/w
* know there are new descriptors to fetch. (Only * know there are new descriptors to fetch. (Only
* applicable for weak-ordered memory model archs, * applicable for weak-ordered memory model archs,
* such as IA-64). */ * such as IA-64).
*/
wmb(); wmb();
tx_ring->buffer_info[first].next_to_watch = tx_desc; tx_ring->buffer_info[first].next_to_watch = tx_desc;
tx_ring->next_to_use = i; tx_ring->next_to_use = i;
writel(i, adapter->hw.hw_addr + tx_ring->tail); writel(i, adapter->hw.hw_addr + tx_ring->tail);
/* we need this if more than one processor can write to our tail /* we need this if more than one processor can write to our tail
* at a time, it syncronizes IO on IA64/Altix systems */ * at a time, it synchronizes IO on IA64/Altix systems
*/
mmiowb(); mmiowb();
} }
...@@ -2225,8 +2233,7 @@ static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb, ...@@ -2225,8 +2233,7 @@ static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb,
return NETDEV_TX_OK; return NETDEV_TX_OK;
} }
/* /* need: count + 4 desc gap to keep tail from touching
* need: count + 4 desc gap to keep tail from touching
* + 2 desc gap to keep tail from touching head, * + 2 desc gap to keep tail from touching head,
* + 1 desc for skb->data, * + 1 desc for skb->data,
* + 1 desc for context descriptor, * + 1 desc for context descriptor,
...@@ -2261,8 +2268,7 @@ static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb, ...@@ -2261,8 +2268,7 @@ static netdev_tx_t igbvf_xmit_frame_ring_adv(struct sk_buff *skb,
(skb->ip_summed == CHECKSUM_PARTIAL)) (skb->ip_summed == CHECKSUM_PARTIAL))
tx_flags |= IGBVF_TX_FLAGS_CSUM; tx_flags |= IGBVF_TX_FLAGS_CSUM;
/* /* count reflects descriptors mapped, if 0 then mapping error
* count reflects descriptors mapped, if 0 then mapping error
* has occurred and we need to rewind the descriptor queue * has occurred and we need to rewind the descriptor queue
*/ */
count = igbvf_tx_map_adv(adapter, tx_ring, skb); count = igbvf_tx_map_adv(adapter, tx_ring, skb);
...@@ -2313,6 +2319,7 @@ static void igbvf_tx_timeout(struct net_device *netdev) ...@@ -2313,6 +2319,7 @@ static void igbvf_tx_timeout(struct net_device *netdev)
static void igbvf_reset_task(struct work_struct *work) static void igbvf_reset_task(struct work_struct *work)
{ {
struct igbvf_adapter *adapter; struct igbvf_adapter *adapter;
adapter = container_of(work, struct igbvf_adapter, reset_task); adapter = container_of(work, struct igbvf_adapter, reset_task);
igbvf_reinit_locked(adapter); igbvf_reinit_locked(adapter);
...@@ -2356,14 +2363,13 @@ static int igbvf_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -2356,14 +2363,13 @@ static int igbvf_change_mtu(struct net_device *netdev, int new_mtu)
} }
while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state)) while (test_and_set_bit(__IGBVF_RESETTING, &adapter->state))
msleep(1); usleep_range(1000, 2000);
/* igbvf_down has a dependency on max_frame_size */ /* igbvf_down has a dependency on max_frame_size */
adapter->max_frame_size = max_frame; adapter->max_frame_size = max_frame;
if (netif_running(netdev)) if (netif_running(netdev))
igbvf_down(adapter); igbvf_down(adapter);
/* /* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
* NOTE: netdev_alloc_skb reserves 16 bytes, and typically NET_IP_ALIGN
* means we reserve 2 more, this pushes us to allocate from the next * means we reserve 2 more, this pushes us to allocate from the next
* larger slab size. * larger slab size.
* i.e. RXBUFFER_2048 --> size-4096 slab * i.e. RXBUFFER_2048 --> size-4096 slab
...@@ -2382,7 +2388,6 @@ static int igbvf_change_mtu(struct net_device *netdev, int new_mtu) ...@@ -2382,7 +2388,6 @@ static int igbvf_change_mtu(struct net_device *netdev, int new_mtu)
adapter->rx_buffer_len = PAGE_SIZE / 2; adapter->rx_buffer_len = PAGE_SIZE / 2;
#endif #endif
/* adjust allocation if LPE protects us, and we aren't using SBP */ /* adjust allocation if LPE protects us, and we aren't using SBP */
if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) || if ((max_frame == ETH_FRAME_LEN + ETH_FCS_LEN) ||
(max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN)) (max_frame == ETH_FRAME_LEN + VLAN_HLEN + ETH_FCS_LEN))
...@@ -2477,8 +2482,7 @@ static void igbvf_shutdown(struct pci_dev *pdev) ...@@ -2477,8 +2482,7 @@ static void igbvf_shutdown(struct pci_dev *pdev)
} }
#ifdef CONFIG_NET_POLL_CONTROLLER #ifdef CONFIG_NET_POLL_CONTROLLER
/* /* Polling 'interrupt' - used by things like netconsole to send skbs
* Polling 'interrupt' - used by things like netconsole to send skbs
* without having to re-enable interrupts. It's not called while * without having to re-enable interrupts. It's not called while
* the interrupt routine is executing. * the interrupt routine is executing.
*/ */
...@@ -2645,8 +2649,8 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2645,8 +2649,8 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
} else { } else {
err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32));
if (err) { if (err) {
dev_err(&pdev->dev, "No usable DMA " dev_err(&pdev->dev,
"configuration, aborting\n"); "No usable DMA configuration, aborting\n");
goto err_dma; goto err_dma;
} }
} }
...@@ -2742,7 +2746,8 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2742,7 +2746,8 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
if (err) if (err)
dev_info(&pdev->dev, "Error reading MAC address.\n"); dev_info(&pdev->dev, "Error reading MAC address.\n");
else if (is_zero_ether_addr(adapter->hw.mac.addr)) else if (is_zero_ether_addr(adapter->hw.mac.addr))
dev_info(&pdev->dev, "MAC address not assigned by administrator.\n"); dev_info(&pdev->dev,
"MAC address not assigned by administrator.\n");
memcpy(netdev->dev_addr, adapter->hw.mac.addr, memcpy(netdev->dev_addr, adapter->hw.mac.addr,
netdev->addr_len); netdev->addr_len);
} }
...@@ -2755,7 +2760,7 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent) ...@@ -2755,7 +2760,7 @@ static int igbvf_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
} }
setup_timer(&adapter->watchdog_timer, &igbvf_watchdog, setup_timer(&adapter->watchdog_timer, &igbvf_watchdog,
(unsigned long) adapter); (unsigned long)adapter);
INIT_WORK(&adapter->reset_task, igbvf_reset_task); INIT_WORK(&adapter->reset_task, igbvf_reset_task);
INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task); INIT_WORK(&adapter->watchdog_task, igbvf_watchdog_task);
...@@ -2818,8 +2823,7 @@ static void igbvf_remove(struct pci_dev *pdev) ...@@ -2818,8 +2823,7 @@ static void igbvf_remove(struct pci_dev *pdev)
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;
/* /* The watchdog timer may be rescheduled, so explicitly
* The watchdog timer may be rescheduled, so explicitly
* disable it from being rescheduled. * disable it from being rescheduled.
*/ */
set_bit(__IGBVF_DOWN, &adapter->state); set_bit(__IGBVF_DOWN, &adapter->state);
...@@ -2832,9 +2836,8 @@ static void igbvf_remove(struct pci_dev *pdev) ...@@ -2832,9 +2836,8 @@ static void igbvf_remove(struct pci_dev *pdev)
igbvf_reset_interrupt_capability(adapter); igbvf_reset_interrupt_capability(adapter);
/* /* it is important to delete the NAPI struct prior to freeing the
* it is important to delete the napi struct prior to freeing the * Rx ring so that you do not end up with null pointer refs
* rx ring so that you do not end up with null pointer refs
*/ */
netif_napi_del(&adapter->rx_ring->napi); netif_napi_del(&adapter->rx_ring->napi);
kfree(adapter->tx_ring); kfree(adapter->tx_ring);
...@@ -2888,6 +2891,7 @@ static struct pci_driver igbvf_driver = { ...@@ -2888,6 +2891,7 @@ static struct pci_driver igbvf_driver = {
static int __init igbvf_init_module(void) static int __init igbvf_init_module(void)
{ {
int ret; int ret;
pr_info("%s - version %s\n", igbvf_driver_string, igbvf_driver_version); pr_info("%s - version %s\n", igbvf_driver_string, igbvf_driver_version);
pr_info("%s\n", igbvf_copyright); pr_info("%s\n", igbvf_copyright);
...@@ -2909,7 +2913,6 @@ static void __exit igbvf_exit_module(void) ...@@ -2909,7 +2913,6 @@ static void __exit igbvf_exit_module(void)
} }
module_exit(igbvf_exit_module); module_exit(igbvf_exit_module);
MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>"); MODULE_AUTHOR("Intel Corporation, <e1000-devel@lists.sourceforge.net>");
MODULE_DESCRIPTION("Intel(R) Gigabit Virtual Function Network Driver"); MODULE_DESCRIPTION("Intel(R) Gigabit Virtual Function Network Driver");
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
......
...@@ -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".
...@@ -40,8 +39,8 @@ ...@@ -40,8 +39,8 @@
#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.
* *
......
...@@ -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,7 +24,6 @@ ...@@ -25,7 +24,6 @@
*******************************************************************************/ *******************************************************************************/
#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);
...@@ -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;
} }
...@@ -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".
...@@ -49,8 +48,7 @@ struct e1000_hw; ...@@ -49,8 +48,7 @@ struct e1000_hw;
#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.
...@@ -69,8 +67,8 @@ union e1000_adv_rx_desc { ...@@ -69,8 +67,8 @@ 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 {
...@@ -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