|
@@ -185,6 +185,7 @@ static void i40evf_tx_timeout(struct net_device *netdev)
|
|
|
static void i40evf_misc_irq_disable(struct i40evf_adapter *adapter)
|
|
|
{
|
|
|
struct i40e_hw *hw = &adapter->hw;
|
|
|
+
|
|
|
wr32(hw, I40E_VFINT_DYN_CTL01, 0);
|
|
|
|
|
|
/* read flush */
|
|
@@ -200,6 +201,7 @@ static void i40evf_misc_irq_disable(struct i40evf_adapter *adapter)
|
|
|
static void i40evf_misc_irq_enable(struct i40evf_adapter *adapter)
|
|
|
{
|
|
|
struct i40e_hw *hw = &adapter->hw;
|
|
|
+
|
|
|
wr32(hw, I40E_VFINT_DYN_CTL01, I40E_VFINT_DYN_CTL01_INTENA_MASK |
|
|
|
I40E_VFINT_DYN_CTL01_ITR_INDX_MASK);
|
|
|
wr32(hw, I40E_VFINT_ICR0_ENA1, I40E_VFINT_ICR0_ENA_ADMINQ_MASK);
|
|
@@ -226,7 +228,6 @@ static void i40evf_irq_disable(struct i40evf_adapter *adapter)
|
|
|
}
|
|
|
/* read flush */
|
|
|
rd32(hw, I40E_VFGEN_RSTAT);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -253,8 +254,7 @@ void i40evf_irq_enable_queues(struct i40evf_adapter *adapter, u32 mask)
|
|
|
* @adapter: board private structure
|
|
|
* @mask: bitmap of vectors to trigger
|
|
|
**/
|
|
|
-static void i40evf_fire_sw_int(struct i40evf_adapter *adapter,
|
|
|
- u32 mask)
|
|
|
+static void i40evf_fire_sw_int(struct i40evf_adapter *adapter, u32 mask)
|
|
|
{
|
|
|
struct i40e_hw *hw = &adapter->hw;
|
|
|
int i;
|
|
@@ -551,6 +551,7 @@ static void i40evf_free_traffic_irqs(struct i40evf_adapter *adapter)
|
|
|
{
|
|
|
int i;
|
|
|
int q_vectors;
|
|
|
+
|
|
|
q_vectors = adapter->num_msix_vectors - NONQ_VECS;
|
|
|
|
|
|
for (i = 0; i < q_vectors; i++) {
|
|
@@ -584,6 +585,7 @@ static void i40evf_configure_tx(struct i40evf_adapter *adapter)
|
|
|
{
|
|
|
struct i40e_hw *hw = &adapter->hw;
|
|
|
int i;
|
|
|
+
|
|
|
for (i = 0; i < adapter->num_active_queues; i++)
|
|
|
adapter->tx_rings[i]->tail = hw->hw_addr + I40E_QTX_TAIL1(i);
|
|
|
}
|
|
@@ -705,7 +707,7 @@ static void i40evf_del_vlan(struct i40evf_adapter *adapter, u16 vlan)
|
|
|
* @vid: VLAN tag
|
|
|
**/
|
|
|
static int i40evf_vlan_rx_add_vid(struct net_device *netdev,
|
|
|
- __always_unused __be16 proto, u16 vid)
|
|
|
+ __always_unused __be16 proto, u16 vid)
|
|
|
{
|
|
|
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
@@ -720,7 +722,7 @@ static int i40evf_vlan_rx_add_vid(struct net_device *netdev,
|
|
|
* @vid: VLAN tag
|
|
|
**/
|
|
|
static int i40evf_vlan_rx_kill_vid(struct net_device *netdev,
|
|
|
- __always_unused __be16 proto, u16 vid)
|
|
|
+ __always_unused __be16 proto, u16 vid)
|
|
|
{
|
|
|
struct i40evf_adapter *adapter = netdev_priv(netdev);
|
|
|
|
|
@@ -881,6 +883,7 @@ static void i40evf_napi_enable_all(struct i40evf_adapter *adapter)
|
|
|
|
|
|
for (q_idx = 0; q_idx < q_vectors; q_idx++) {
|
|
|
struct napi_struct *napi;
|
|
|
+
|
|
|
q_vector = adapter->q_vector[q_idx];
|
|
|
napi = &q_vector->napi;
|
|
|
napi_enable(napi);
|
|
@@ -920,6 +923,7 @@ static void i40evf_configure(struct i40evf_adapter *adapter)
|
|
|
|
|
|
for (i = 0; i < adapter->num_active_queues; i++) {
|
|
|
struct i40e_ring *ring = adapter->rx_rings[i];
|
|
|
+
|
|
|
i40evf_alloc_rx_buffers(ring, ring->count);
|
|
|
ring->next_to_use = ring->count - 1;
|
|
|
writel(ring->next_to_use, ring->tail);
|
|
@@ -1088,7 +1092,7 @@ static int i40evf_alloc_queues(struct i40evf_adapter *adapter)
|
|
|
struct i40e_ring *tx_ring;
|
|
|
struct i40e_ring *rx_ring;
|
|
|
|
|
|
- tx_ring = kzalloc(sizeof(struct i40e_ring) * 2, GFP_KERNEL);
|
|
|
+ tx_ring = kzalloc(sizeof(*tx_ring) * 2, GFP_KERNEL);
|
|
|
if (!tx_ring)
|
|
|
goto err_out;
|
|
|
|
|
@@ -1172,14 +1176,14 @@ static int i40evf_alloc_q_vectors(struct i40evf_adapter *adapter)
|
|
|
num_q_vectors = adapter->num_msix_vectors - NONQ_VECS;
|
|
|
|
|
|
for (q_idx = 0; q_idx < num_q_vectors; q_idx++) {
|
|
|
- q_vector = kzalloc(sizeof(struct i40e_q_vector), GFP_KERNEL);
|
|
|
+ q_vector = kzalloc(sizeof(*q_vector), GFP_KERNEL);
|
|
|
if (!q_vector)
|
|
|
goto err_out;
|
|
|
q_vector->adapter = adapter;
|
|
|
q_vector->vsi = &adapter->vsi;
|
|
|
q_vector->v_idx = q_idx;
|
|
|
netif_napi_add(adapter->netdev, &q_vector->napi,
|
|
|
- i40evf_napi_poll, NAPI_POLL_WEIGHT);
|
|
|
+ i40evf_napi_poll, NAPI_POLL_WEIGHT);
|
|
|
adapter->q_vector[q_idx] = q_vector;
|
|
|
}
|
|
|
|
|
@@ -1265,8 +1269,8 @@ int i40evf_init_interrupt_scheme(struct i40evf_adapter *adapter)
|
|
|
}
|
|
|
|
|
|
dev_info(&adapter->pdev->dev, "Multiqueue %s: Queue pair count = %u",
|
|
|
- (adapter->num_active_queues > 1) ? "Enabled" :
|
|
|
- "Disabled", adapter->num_active_queues);
|
|
|
+ (adapter->num_active_queues > 1) ? "Enabled" : "Disabled",
|
|
|
+ adapter->num_active_queues);
|
|
|
|
|
|
return 0;
|
|
|
err_alloc_queues:
|
|
@@ -1284,6 +1288,7 @@ err_set_interrupt:
|
|
|
static void i40evf_watchdog_timer(unsigned long data)
|
|
|
{
|
|
|
struct i40evf_adapter *adapter = (struct i40evf_adapter *)data;
|
|
|
+
|
|
|
schedule_work(&adapter->watchdog_task);
|
|
|
/* timer will be rescheduled in watchdog task */
|
|
|
}
|
|
@@ -1295,8 +1300,8 @@ static void i40evf_watchdog_timer(unsigned long data)
|
|
|
static void i40evf_watchdog_task(struct work_struct *work)
|
|
|
{
|
|
|
struct i40evf_adapter *adapter = container_of(work,
|
|
|
- struct i40evf_adapter,
|
|
|
- watchdog_task);
|
|
|
+ struct i40evf_adapter,
|
|
|
+ watchdog_task);
|
|
|
struct i40e_hw *hw = &adapter->hw;
|
|
|
uint32_t rstat_val;
|
|
|
|
|
@@ -1334,7 +1339,7 @@ static void i40evf_watchdog_task(struct work_struct *work)
|
|
|
|
|
|
/* check for reset */
|
|
|
rstat_val = rd32(hw, I40E_VFGEN_RSTAT) &
|
|
|
- I40E_VFGEN_RSTAT_VFR_STATE_MASK;
|
|
|
+ I40E_VFGEN_RSTAT_VFR_STATE_MASK;
|
|
|
if (!(adapter->flags & I40EVF_FLAG_RESET_PENDING) &&
|
|
|
(rstat_val != I40E_VFR_VFACTIVE) &&
|
|
|
(rstat_val != I40E_VFR_COMPLETED)) {
|
|
@@ -1575,12 +1580,12 @@ continue_reset:
|
|
|
/* kill and reinit the admin queue */
|
|
|
if (i40evf_shutdown_adminq(hw))
|
|
|
dev_warn(&adapter->pdev->dev,
|
|
|
- "%s: Failed to destroy the Admin Queue resources\n",
|
|
|
- __func__);
|
|
|
+ "%s: Failed to destroy the Admin Queue resources\n",
|
|
|
+ __func__);
|
|
|
err = i40evf_init_adminq(hw);
|
|
|
if (err)
|
|
|
dev_info(&adapter->pdev->dev, "%s: init_adminq failed: %d\n",
|
|
|
- __func__, err);
|
|
|
+ __func__, err);
|
|
|
|
|
|
adapter->aq_pending = 0;
|
|
|
adapter->aq_required = 0;
|
|
@@ -1646,9 +1651,8 @@ static void i40evf_adminq_task(struct work_struct *work)
|
|
|
i40evf_virtchnl_completion(adapter, v_msg->v_opcode,
|
|
|
v_msg->v_retval, event.msg_buf,
|
|
|
event.msg_len);
|
|
|
- if (pending != 0) {
|
|
|
+ if (pending != 0)
|
|
|
memset(event.msg_buf, 0, I40EVF_MAX_AQ_BUF_SIZE);
|
|
|
- }
|
|
|
} while (pending);
|
|
|
|
|
|
/* check for error indications */
|
|
@@ -1705,7 +1709,6 @@ static void i40evf_free_all_tx_resources(struct i40evf_adapter *adapter)
|
|
|
for (i = 0; i < adapter->num_active_queues; i++)
|
|
|
if (adapter->tx_rings[i]->desc)
|
|
|
i40evf_free_tx_resources(adapter->tx_rings[i]);
|
|
|
-
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -2019,7 +2022,7 @@ static void i40evf_init_task(struct work_struct *work)
|
|
|
err = i40evf_check_reset_complete(hw);
|
|
|
if (err) {
|
|
|
dev_info(&pdev->dev, "Device is still in reset (%d), retrying\n",
|
|
|
- err);
|
|
|
+ err);
|
|
|
goto err;
|
|
|
}
|
|
|
hw->aq.num_arq_entries = I40EVF_AQ_LEN;
|
|
@@ -2051,7 +2054,7 @@ static void i40evf_init_task(struct work_struct *work)
|
|
|
err = i40evf_verify_api_ver(adapter);
|
|
|
if (err) {
|
|
|
dev_info(&pdev->dev, "Unable to verify API version (%d), retrying\n",
|
|
|
- err);
|
|
|
+ err);
|
|
|
if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) {
|
|
|
dev_info(&pdev->dev, "Resending request\n");
|
|
|
err = i40evf_send_api_ver(adapter);
|
|
@@ -2500,8 +2503,9 @@ static struct pci_driver i40evf_driver = {
|
|
|
static int __init i40evf_init_module(void)
|
|
|
{
|
|
|
int ret;
|
|
|
+
|
|
|
pr_info("i40evf: %s - version %s\n", i40evf_driver_string,
|
|
|
- i40evf_driver_version);
|
|
|
+ i40evf_driver_version);
|
|
|
|
|
|
pr_info("%s\n", i40evf_copyright);
|
|
|
|