diff options
Diffstat (limited to 'drivers/net/ethernet/intel/iavf/iavf_ethtool.c')
| -rw-r--r-- | drivers/net/ethernet/intel/iavf/iavf_ethtool.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c index 8d856f5dc38e..24ee6ddb8dcb 100644 --- a/drivers/net/ethernet/intel/iavf/iavf_ethtool.c +++ b/drivers/net/ethernet/intel/iavf/iavf_ethtool.c @@ -861,6 +861,8 @@ static int iavf_fltr_to_ethtool_flow(enum iavf_fdir_flow_type flow)  		return ESP_V6_FLOW;  	case IAVF_FDIR_FLOW_IPV6_OTHER:  		return IPV6_USER_FLOW; +	case IAVF_FDIR_FLOW_NON_IP_L2: +		return ETHER_FLOW;  	default:  		/* 0 is undefined ethtool flow */  		return 0; @@ -900,6 +902,8 @@ static enum iavf_fdir_flow_type iavf_ethtool_flow_to_fltr(int eth)  		return IAVF_FDIR_FLOW_IPV6_ESP;  	case IPV6_USER_FLOW:  		return IAVF_FDIR_FLOW_IPV6_OTHER; +	case ETHER_FLOW: +		return IAVF_FDIR_FLOW_NON_IP_L2;  	default:  		return IAVF_FDIR_FLOW_NONE;  	} @@ -1025,6 +1029,10 @@ iavf_get_ethtool_fdir_entry(struct iavf_adapter *adapter,  		fsp->m_u.usr_ip6_spec.tclass = rule->ip_mask.tclass;  		fsp->m_u.usr_ip6_spec.l4_proto = rule->ip_mask.proto;  		break; +	case ETHER_FLOW: +		fsp->h_u.ether_spec.h_proto = rule->eth_data.etype; +		fsp->m_u.ether_spec.h_proto = rule->eth_mask.etype; +		break;  	default:  		ret = -EINVAL;  		break; @@ -1197,6 +1205,10 @@ iavf_add_fdir_fltr_info(struct iavf_adapter *adapter, struct ethtool_rx_flow_spe  		fltr->ip_mask.tclass = fsp->m_u.usr_ip6_spec.tclass;  		fltr->ip_mask.proto = fsp->m_u.usr_ip6_spec.l4_proto;  		break; +	case ETHER_FLOW: +		fltr->eth_data.etype = fsp->h_u.ether_spec.h_proto; +		fltr->eth_mask.etype = fsp->m_u.ether_spec.h_proto; +		break;  	default:  		/* not doing un-parsed flow types */  		return -EINVAL;  | 
