summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2019-09-13 15:50:48 +0200
committerDavid S. Miller <davem@davemloft.net>2019-09-13 15:50:48 +0200
commit6cd476d26bf50f87cce33c76c282d6bdb208d840 (patch)
treeceda9ec56b6ccfb9bf25a989d7bfcff9793bea2b /drivers/net/ethernet/intel/ice/ice_dcb_lib.c
parent069841ef8293697e951c34f9a45601b77fb541d7 (diff)
parent2de1256636589bcc29f18feefcfa65588404746e (diff)
downloadlinux-6cd476d26bf50f87cce33c76c282d6bdb208d840.tar.bz2
Merge branch '100GbE' of git://git.kernel.org/pub/scm/linux/kernel/git/jkirsher/next-queue
Jeff Kirsher says: ==================== 100GbE Intel Wired LAN Driver Updates 2019-09-12 This series contains updates to ice driver to implement and support loading a Dynamic Device Personalization (DDP) package from lib/firmware onto the device. Paul updates the way the driver version is stored in the driver so that we can pass the driver version to the firmware. Passing of the driver version to the firmware is needed for the DDP package to ensure we have the appropriate support in the driver for the features in the package. Lukasz fixes how the firmware version is stored to align with how the firmware stores its own version. Also extended the log message to display additional useful information such as NVM version, API patch information and firmware build hash. Tony adds the needed driver support to check, load and store the DDP package. Also add support for the ability to load DDP packages intended for specific hardware devices, as well as what to do when loading of the DDP package fails to load. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/intel/ice/ice_dcb_lib.c')
-rw-r--r--drivers/net/ethernet/intel/ice/ice_dcb_lib.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/ice/ice_dcb_lib.c b/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
index 97c22d4aae1d..dd47869c4ad4 100644
--- a/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
+++ b/drivers/net/ethernet/intel/ice/ice_dcb_lib.c
@@ -4,6 +4,48 @@
#include "ice_dcb_lib.h"
/**
+ * ice_vsi_cfg_netdev_tc - Setup the netdev TC configuration
+ * @vsi: the VSI being configured
+ * @ena_tc: TC map to be enabled
+ */
+void ice_vsi_cfg_netdev_tc(struct ice_vsi *vsi, u8 ena_tc)
+{
+ struct net_device *netdev = vsi->netdev;
+ struct ice_pf *pf = vsi->back;
+ struct ice_dcbx_cfg *dcbcfg;
+ u8 netdev_tc;
+ int i;
+
+ if (!netdev)
+ return;
+
+ if (!ena_tc) {
+ netdev_reset_tc(netdev);
+ return;
+ }
+
+ if (netdev_set_num_tc(netdev, vsi->tc_cfg.numtc))
+ return;
+
+ dcbcfg = &pf->hw.port_info->local_dcbx_cfg;
+
+ ice_for_each_traffic_class(i)
+ if (vsi->tc_cfg.ena_tc & BIT(i))
+ netdev_set_tc_queue(netdev,
+ vsi->tc_cfg.tc_info[i].netdev_tc,
+ vsi->tc_cfg.tc_info[i].qcount_tx,
+ vsi->tc_cfg.tc_info[i].qoffset);
+
+ for (i = 0; i < ICE_MAX_USER_PRIORITY; i++) {
+ u8 ets_tc = dcbcfg->etscfg.prio_table[i];
+
+ /* Get the mapped netdev TC# for the UP */
+ netdev_tc = vsi->tc_cfg.tc_info[ets_tc].netdev_tc;
+ netdev_set_prio_tc_map(netdev, i, netdev_tc);
+ }
+}
+
+/**
* ice_dcb_get_ena_tc - return bitmap of enabled TCs
* @dcbcfg: DCB config to evaluate for enabled TCs
*/