- Patching the driver for linux-4.14. Resolves issue #188
parent
80723ecd94
commit
c14d1e522a
|
@ -5733,30 +5733,36 @@ exit:
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef NETIF_F_HW_TC
|
#ifdef NETIF_F_HW_TC
|
||||||
#ifdef I40E_FCOE
|
#ifdef HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
|
static int __i40e_setup_tc(struct net_device *netdev, enum tc_setup_type type,
|
||||||
int __i40e_setup_tc(struct net_device *netdev, u32 handle, __be16 proto,
|
void *type_data)
|
||||||
struct tc_to_netdev *tc)
|
#elif defined(HAVE_NDO_SETUP_TC_CHAIN_INDEX)
|
||||||
#else
|
static int __i40e_setup_tc(struct net_device *netdev, u32 handle,
|
||||||
int __i40e_setup_tc(struct net_device *netdev, u32 handle, u32 chain_index,
|
u32 chain_index, __be16 proto,
|
||||||
__be16 proto, struct tc_to_netdev *tc)
|
|
||||||
#endif
|
|
||||||
#else
|
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
|
|
||||||
static int __i40e_setup_tc(struct net_device *netdev, u32 handle, __be16 proto,
|
|
||||||
struct tc_to_netdev *tc)
|
struct tc_to_netdev *tc)
|
||||||
#else
|
#else
|
||||||
static int __i40e_setup_tc(struct net_device *netdev, u32 handle, u32 chain_index,
|
static int __i40e_setup_tc(struct net_device *netdev, u32 handle, __be16 proto,
|
||||||
__be16 proto, struct tc_to_netdev *tc)
|
struct tc_to_netdev *tc)
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (tc->type != TC_SETUP_MQPRIO)
|
#ifdef HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||||
return -EINVAL;
|
struct tc_mqprio_qopt *mqprio = type_data;
|
||||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
|
|
||||||
return i40e_setup_tc(netdev, tc->tc);
|
|
||||||
#else
|
#else
|
||||||
return i40e_setup_tc(netdev, tc->mqprio->num_tc);
|
#ifdef TC_MQPRIO_HW_OFFLOAD_MAX
|
||||||
|
struct tc_mqprio_qopt *mqprio = tc->mqprio;
|
||||||
|
#endif /* TC_MQPRIO_HW_OFFLOAD_MAX*/
|
||||||
|
unsigned int type = tc->type;
|
||||||
|
#endif /* HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV */
|
||||||
|
|
||||||
|
if (type != TC_SETUP_QDISC_MQPRIO)
|
||||||
|
return -EINVAL;
|
||||||
|
|
||||||
|
#ifdef TC_MQPRIO_HW_OFFLOAD_MAX
|
||||||
|
mqprio->hw = TC_MQPRIO_HW_OFFLOAD_TCS;
|
||||||
|
|
||||||
|
return i40e_setup_tc(netdev, mqprio->num_tc);
|
||||||
|
#else
|
||||||
|
return i40e_setup_tc(netdev, tc->tc);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif /* NETIF_F_HW_TC */
|
#endif /* NETIF_F_HW_TC */
|
||||||
|
|
|
@ -1639,6 +1639,36 @@ static inline struct mii_ioctl_data *_kc_if_mii(struct ifreq *rq)
|
||||||
|
|
||||||
#endif /* < 2.6.8 */
|
#endif /* < 2.6.8 */
|
||||||
|
|
||||||
|
/*****************************************************************************/
|
||||||
|
/*****************************************************************************/
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,14,0))
|
||||||
|
#ifndef ethtool_link_ksettings_del_link_mode
|
||||||
|
#define ethtool_link_ksettings_del_link_mode(ptr, name, mode) \
|
||||||
|
__clear_bit(ETHTOOL_LINK_MODE_ ## mode ## _BIT, (ptr)->link_modes.name)
|
||||||
|
#endif
|
||||||
|
#if (SLE_VERSION_CODE && (SLE_VERSION_CODE >= SLE_VERSION(15,0,0)))
|
||||||
|
#define HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if (RHEL_RELEASE_CODE && (RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7,5)))
|
||||||
|
#define HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||||
|
#define HAVE_RHEL7_NETDEV_OPS_EXT_NDO_SETUP_TC
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define TIMER_DATA_TYPE unsigned long
|
||||||
|
#define TIMER_FUNC_TYPE void (*)(TIMER_DATA_TYPE)
|
||||||
|
|
||||||
|
#define timer_setup(timer, callback, flags) \
|
||||||
|
__setup_timer((timer), (TIMER_FUNC_TYPE)(callback), \
|
||||||
|
(TIMER_DATA_TYPE)(timer), (flags))
|
||||||
|
|
||||||
|
#define from_timer(var, callback_timer, timer_fieldname) \
|
||||||
|
container_of(callback_timer, typeof(*var), timer_fieldname)
|
||||||
|
|
||||||
|
#else /* > 4.14 */
|
||||||
|
#define HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||||
|
#endif /* 4.14.0 */
|
||||||
|
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9))
|
#if ( LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9))
|
||||||
#include <net/dsfield.h>
|
#include <net/dsfield.h>
|
||||||
|
@ -5415,4 +5445,13 @@ static inline void __page_frag_cache_drain(struct page *page,
|
||||||
#define HAVE_VOID_NDO_GET_STATS64
|
#define HAVE_VOID_NDO_GET_STATS64
|
||||||
#endif /* 4.11.0 */
|
#endif /* 4.11.0 */
|
||||||
|
|
||||||
|
#if (LINUX_VERSION_CODE < KERNEL_VERSION(4,15,0))
|
||||||
|
#define TC_SETUP_QDISC_MQPRIO TC_SETUP_MQPRIO
|
||||||
|
#ifdef ETHTOOL_GLINKSETTINGS
|
||||||
|
void _kc_ethtool_intersect_link_masks(struct ethtool_link_ksettings *dst,
|
||||||
|
struct ethtool_link_ksettings *src);
|
||||||
|
#define ethtool_intersect_link_masks _kc_ethtool_intersect_link_masks
|
||||||
|
#endif /* ETHTOOL_GLINKSETTINGS */
|
||||||
|
#endif /* 4.15.0 */
|
||||||
|
|
||||||
#endif /* _KCOMPAT_H_ */
|
#endif /* _KCOMPAT_H_ */
|
||||||
|
|
Loading…
Reference in New Issue