From b0b1534b89493f9437d1d2fad982bf3054115dad Mon Sep 17 00:00:00 2001 From: Michael Chan Date: Fri, 2 Dec 2016 21:17:15 -0500 Subject: [PATCH] bnxt_en: Re-factor bnxt_setup_tc(). Orabug: 24567991 Add a new function bnxt_setup_mq_tc() to handle MQPRIO. This new function will be called during ETS setup when we add DCBNL in the next patch. Signed-off-by: Michael Chan Signed-off-by: David S. Miller (cherry picked from commit c5e3deb8a38453037b89e0b0485d3b031896e8eb) Signed-off-by: Brian Maly Conflicts: drivers/net/ethernet/broadcom/bnxt/bnxt.c Signed-off-by: Dhaval Giani --- drivers/net/ethernet/broadcom/bnxt/bnxt.c | 19 ++++++++++++++++++- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.c b/drivers/net/ethernet/broadcom/bnxt/bnxt.c index 3398e4a0ab10..cf40e5089091 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.c @@ -6360,7 +6360,7 @@ static int bnxt_change_mtu(struct net_device *dev, int new_mtu) return 0; } -static int bnxt_setup_tc(struct net_device *dev, u8 tc) +int bnxt_setup_mq_tc(struct net_device *dev, u8 tc) { struct bnxt *bp = netdev_priv(dev); bool sh = false; @@ -6406,6 +6406,17 @@ static int bnxt_setup_tc(struct net_device *dev, u8 tc) return 0; } +#ifdef HAVE_TC_TO_NETDEV +static int bnxt_setup_tc(struct net_device *dev, u32 handle, __be16 proto, + struct tc_to_netdev *ntc) +{ + if (ntc->type != TC_SETUP_MQPRIO) + return -EINVAL; + + return bnxt_setup_mq_tc(dev, ntc->tc); +} +#endif + #ifdef CONFIG_RFS_ACCEL #ifdef NEW_FLOW_KEYS static bool bnxt_fltr_match(struct bnxt_ntuple_filter *f1, @@ -6700,7 +6711,13 @@ static const struct net_device_ops bnxt_netdev_ops = { #ifdef CONFIG_NET_POLL_CONTROLLER .ndo_poll_controller = bnxt_poll_controller, #endif +#ifdef HAVE_SETUP_TC +#ifdef HAVE_TC_TO_NETDEV + .ndo_setup_tc = bnxt_set_tc, +#else .ndo_setup_tc = bnxt_setup_tc, +#endif +#endif #ifdef CONFIG_RFS_ACCEL .ndo_rx_flow_steer = bnxt_rx_flow_steer, #endif diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 47be7894c67b..fcd07ee12ed4 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -1225,5 +1225,6 @@ int bnxt_hwrm_set_link_setting(struct bnxt *, bool, bool); int bnxt_hwrm_fw_set_time(struct bnxt *); int bnxt_open_nic(struct bnxt *, bool, bool); int bnxt_close_nic(struct bnxt *, bool, bool); +int bnxt_setup_mq_tc(struct net_device *dev, u8 tc); int bnxt_get_max_rings(struct bnxt *, int *, int *, bool); #endif -- 2.50.1