aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k.h10
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c6
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_main.c4
-rw-r--r--drivers/net/ethernet/intel/fm10k/fm10k_pci.c9
4 files changed, 11 insertions, 18 deletions
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k.h b/drivers/net/ethernet/intel/fm10k/fm10k.h
index 7d42582ed48d..b14441944b4b 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k.h
+++ b/drivers/net/ethernet/intel/fm10k/fm10k.h
@@ -1,5 +1,5 @@
1/* SPDX-License-Identifier: GPL-2.0 */ 1/* SPDX-License-Identifier: GPL-2.0 */
2/* Copyright(c) 2013 - 2018 Intel Corporation. */ 2/* Copyright(c) 2013 - 2019 Intel Corporation. */
3 3
4#ifndef _FM10K_H_ 4#ifndef _FM10K_H_
5#define _FM10K_H_ 5#define _FM10K_H_
@@ -177,14 +177,10 @@ static inline struct netdev_queue *txring_txq(const struct fm10k_ring *ring)
177#define MIN_Q_VECTORS 1 177#define MIN_Q_VECTORS 1
178enum fm10k_non_q_vectors { 178enum fm10k_non_q_vectors {
179 FM10K_MBX_VECTOR, 179 FM10K_MBX_VECTOR,
180#define NON_Q_VECTORS_VF NON_Q_VECTORS_PF 180 NON_Q_VECTORS
181 NON_Q_VECTORS_PF
182}; 181};
183 182
184#define NON_Q_VECTORS(hw) (((hw)->mac.type == fm10k_mac_pf) ? \ 183#define MIN_MSIX_COUNT(hw) (MIN_Q_VECTORS + NON_Q_VECTORS)
185 NON_Q_VECTORS_PF : \
186 NON_Q_VECTORS_VF)
187#define MIN_MSIX_COUNT(hw) (MIN_Q_VECTORS + NON_Q_VECTORS(hw))
188 184
189struct fm10k_q_vector { 185struct fm10k_q_vector {
190 struct fm10k_intfc *interface; 186 struct fm10k_intfc *interface;
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c b/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
index 1f7e4a8f4557..c681d2d28107 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_ethtool.c
@@ -1114,13 +1114,12 @@ static void fm10k_get_channels(struct net_device *dev,
1114 struct ethtool_channels *ch) 1114 struct ethtool_channels *ch)
1115{ 1115{
1116 struct fm10k_intfc *interface = netdev_priv(dev); 1116 struct fm10k_intfc *interface = netdev_priv(dev);
1117 struct fm10k_hw *hw = &interface->hw;
1118 1117
1119 /* report maximum channels */ 1118 /* report maximum channels */
1120 ch->max_combined = fm10k_max_channels(dev); 1119 ch->max_combined = fm10k_max_channels(dev);
1121 1120
1122 /* report info for other vector */ 1121 /* report info for other vector */
1123 ch->max_other = NON_Q_VECTORS(hw); 1122 ch->max_other = NON_Q_VECTORS;
1124 ch->other_count = ch->max_other; 1123 ch->other_count = ch->max_other;
1125 1124
1126 /* record RSS queues */ 1125 /* record RSS queues */
@@ -1132,14 +1131,13 @@ static int fm10k_set_channels(struct net_device *dev,
1132{ 1131{
1133 struct fm10k_intfc *interface = netdev_priv(dev); 1132 struct fm10k_intfc *interface = netdev_priv(dev);
1134 unsigned int count = ch->combined_count; 1133 unsigned int count = ch->combined_count;
1135 struct fm10k_hw *hw = &interface->hw;
1136 1134
1137 /* verify they are not requesting separate vectors */ 1135 /* verify they are not requesting separate vectors */
1138 if (!count || ch->rx_count || ch->tx_count) 1136 if (!count || ch->rx_count || ch->tx_count)
1139 return -EINVAL; 1137 return -EINVAL;
1140 1138
1141 /* verify other_count has not changed */ 1139 /* verify other_count has not changed */
1142 if (ch->other_count != NON_Q_VECTORS(hw)) 1140 if (ch->other_count != NON_Q_VECTORS)
1143 return -EINVAL; 1141 return -EINVAL;
1144 1142
1145 /* verify the number of channels does not exceed hardware limits */ 1143 /* verify the number of channels does not exceed hardware limits */
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_main.c b/drivers/net/ethernet/intel/fm10k/fm10k_main.c
index 17a96a49174b..e0a2be534b20 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_main.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_main.c
@@ -1824,7 +1824,7 @@ static int fm10k_init_msix_capability(struct fm10k_intfc *interface)
1824 v_budget = min_t(u16, v_budget, num_online_cpus()); 1824 v_budget = min_t(u16, v_budget, num_online_cpus());
1825 1825
1826 /* account for vectors not related to queues */ 1826 /* account for vectors not related to queues */
1827 v_budget += NON_Q_VECTORS(hw); 1827 v_budget += NON_Q_VECTORS;
1828 1828
1829 /* At the same time, hardware can only support a maximum of 1829 /* At the same time, hardware can only support a maximum of
1830 * hw.mac->max_msix_vectors vectors. With features 1830 * hw.mac->max_msix_vectors vectors. With features
@@ -1856,7 +1856,7 @@ static int fm10k_init_msix_capability(struct fm10k_intfc *interface)
1856 } 1856 }
1857 1857
1858 /* record the number of queues available for q_vectors */ 1858 /* record the number of queues available for q_vectors */
1859 interface->num_q_vectors = v_budget - NON_Q_VECTORS(hw); 1859 interface->num_q_vectors = v_budget - NON_Q_VECTORS;
1860 1860
1861 return 0; 1861 return 0;
1862} 1862}
diff --git a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
index 73928dbe714f..bb236fa44048 100644
--- a/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
+++ b/drivers/net/ethernet/intel/fm10k/fm10k_pci.c
@@ -898,7 +898,7 @@ static void fm10k_configure_tx_ring(struct fm10k_intfc *interface,
898 898
899 /* Map interrupt */ 899 /* Map interrupt */
900 if (ring->q_vector) { 900 if (ring->q_vector) {
901 txint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); 901 txint = ring->q_vector->v_idx + NON_Q_VECTORS;
902 txint |= FM10K_INT_MAP_TIMER0; 902 txint |= FM10K_INT_MAP_TIMER0;
903 } 903 }
904 904
@@ -1037,7 +1037,7 @@ static void fm10k_configure_rx_ring(struct fm10k_intfc *interface,
1037 1037
1038 /* Map interrupt */ 1038 /* Map interrupt */
1039 if (ring->q_vector) { 1039 if (ring->q_vector) {
1040 rxint = ring->q_vector->v_idx + NON_Q_VECTORS(hw); 1040 rxint = ring->q_vector->v_idx + NON_Q_VECTORS;
1041 rxint |= FM10K_INT_MAP_TIMER1; 1041 rxint |= FM10K_INT_MAP_TIMER1;
1042 } 1042 }
1043 1043
@@ -1720,10 +1720,9 @@ int fm10k_mbx_request_irq(struct fm10k_intfc *interface)
1720void fm10k_qv_free_irq(struct fm10k_intfc *interface) 1720void fm10k_qv_free_irq(struct fm10k_intfc *interface)
1721{ 1721{
1722 int vector = interface->num_q_vectors; 1722 int vector = interface->num_q_vectors;
1723 struct fm10k_hw *hw = &interface->hw;
1724 struct msix_entry *entry; 1723 struct msix_entry *entry;
1725 1724
1726 entry = &interface->msix_entries[NON_Q_VECTORS(hw) + vector]; 1725 entry = &interface->msix_entries[NON_Q_VECTORS + vector];
1727 1726
1728 while (vector) { 1727 while (vector) {
1729 struct fm10k_q_vector *q_vector; 1728 struct fm10k_q_vector *q_vector;
@@ -1760,7 +1759,7 @@ int fm10k_qv_request_irq(struct fm10k_intfc *interface)
1760 unsigned int ri = 0, ti = 0; 1759 unsigned int ri = 0, ti = 0;
1761 int vector, err; 1760 int vector, err;
1762 1761
1763 entry = &interface->msix_entries[NON_Q_VECTORS(hw)]; 1762 entry = &interface->msix_entries[NON_Q_VECTORS];
1764 1763
1765 for (vector = 0; vector < interface->num_q_vectors; vector++) { 1764 for (vector = 0; vector < interface->num_q_vectors; vector++) {
1766 struct fm10k_q_vector *q_vector = interface->q_vector[vector]; 1765 struct fm10k_q_vector *q_vector = interface->q_vector[vector];