- 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 I40E_FCOE
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 13, 0)
|
||||
int __i40e_setup_tc(struct net_device *netdev, u32 handle, __be16 proto,
|
||||
struct tc_to_netdev *tc)
|
||||
#else
|
||||
int __i40e_setup_tc(struct net_device *netdev, u32 handle, u32 chain_index,
|
||||
__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,
|
||||
#ifdef HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||
static int __i40e_setup_tc(struct net_device *netdev, enum tc_setup_type type,
|
||||
void *type_data)
|
||||
#elif defined(HAVE_NDO_SETUP_TC_CHAIN_INDEX)
|
||||
static int __i40e_setup_tc(struct net_device *netdev, u32 handle,
|
||||
u32 chain_index, __be16 proto,
|
||||
struct tc_to_netdev *tc)
|
||||
#else
|
||||
static int __i40e_setup_tc(struct net_device *netdev, u32 handle, u32 chain_index,
|
||||
__be16 proto, struct tc_to_netdev *tc)
|
||||
#endif
|
||||
static int __i40e_setup_tc(struct net_device *netdev, u32 handle, __be16 proto,
|
||||
struct tc_to_netdev *tc)
|
||||
#endif
|
||||
{
|
||||
if (tc->type != TC_SETUP_MQPRIO)
|
||||
return -EINVAL;
|
||||
#if LINUX_VERSION_CODE < KERNEL_VERSION(4, 12, 0)
|
||||
return i40e_setup_tc(netdev, tc->tc);
|
||||
#ifdef HAVE_NDO_SETUP_TC_REMOVE_TC_TO_NETDEV
|
||||
struct tc_mqprio_qopt *mqprio = type_data;
|
||||
#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 /* NETIF_F_HW_TC */
|
||||
|
|
|
@ -1640,6 +1640,36 @@ static inline struct mii_ioctl_data *_kc_if_mii(struct ifreq *rq)
|
|||
#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))
|
||||
#include <net/dsfield.h>
|
||||
#define __iomem
|
||||
|
@ -5415,4 +5445,13 @@ static inline void __page_frag_cache_drain(struct page *page,
|
|||
#define HAVE_VOID_NDO_GET_STATS64
|
||||
#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_ */
|
||||
|
|
Loading…
Reference in New Issue