Commit e0de7c93 authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller

ethtool: Remove unimplemented flow specification types

struct ethtool_rawip4_spec and struct ethtool_ether_spec are neither
commented nor used by any driver, so remove them.  Adjust padding in
the user-visible unions that included these structures.

Fix references to struct ethtool_rawip4_spec in
ethtool_get_rx_ntuple(), which should use struct ethtool_usrip4_spec.

struct ethtool_usrip4_spec cannot hold IPv6 host addresses and there
is no separate structure that can, so remove ETH_RX_NFC_IP6 and the
reference to it in niu.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e0355873
...@@ -7462,10 +7462,12 @@ static int niu_add_ethtool_tcam_entry(struct niu *np, ...@@ -7462,10 +7462,12 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
if (fsp->flow_type == IP_USER_FLOW) { if (fsp->flow_type == IP_USER_FLOW) {
int i; int i;
int add_usr_cls = 0; int add_usr_cls = 0;
int ipv6 = 0;
struct ethtool_usrip4_spec *uspec = &fsp->h_u.usr_ip4_spec; struct ethtool_usrip4_spec *uspec = &fsp->h_u.usr_ip4_spec;
struct ethtool_usrip4_spec *umask = &fsp->m_u.usr_ip4_spec; struct ethtool_usrip4_spec *umask = &fsp->m_u.usr_ip4_spec;
if (uspec->ip_ver != ETH_RX_NFC_IP4)
return -EINVAL;
niu_lock_parent(np, flags); niu_lock_parent(np, flags);
for (i = 0; i < NIU_L3_PROG_CLS; i++) { for (i = 0; i < NIU_L3_PROG_CLS; i++) {
...@@ -7494,9 +7496,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np, ...@@ -7494,9 +7496,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
default: default:
break; break;
} }
if (uspec->ip_ver == ETH_RX_NFC_IP6) ret = tcam_user_ip_class_set(np, class, 0,
ipv6 = 1;
ret = tcam_user_ip_class_set(np, class, ipv6,
uspec->proto, uspec->proto,
uspec->tos, uspec->tos,
umask->tos); umask->tos);
...@@ -7553,16 +7553,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np, ...@@ -7553,16 +7553,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
ret = -EINVAL; ret = -EINVAL;
goto out; goto out;
case IP_USER_FLOW: case IP_USER_FLOW:
if (fsp->h_u.usr_ip4_spec.ip_ver == ETH_RX_NFC_IP4) { niu_get_tcamkey_from_ip4fs(fsp, tp, l2_rdc_table, class);
niu_get_tcamkey_from_ip4fs(fsp, tp, l2_rdc_table,
class);
} else {
/* Not yet implemented */
netdev_info(np->dev, "niu%d: In %s(): usr flow for IPv6 not implemented\n",
parent->index, __func__);
ret = -EINVAL;
goto out;
}
break; break;
default: default:
netdev_info(np->dev, "niu%d: In %s(): Unknown flow type %d\n", netdev_info(np->dev, "niu%d: In %s(): Unknown flow type %d\n",
......
...@@ -353,20 +353,7 @@ struct ethtool_ah_espip4_spec { ...@@ -353,20 +353,7 @@ struct ethtool_ah_espip4_spec {
__u8 tos; __u8 tos;
}; };
struct ethtool_rawip4_spec {
__be32 ip4src;
__be32 ip4dst;
__u8 hdata[64];
};
struct ethtool_ether_spec {
__be16 ether_type;
__u8 frame_size;
__u8 eframe[16];
};
#define ETH_RX_NFC_IP4 1 #define ETH_RX_NFC_IP4 1
#define ETH_RX_NFC_IP6 2
/** /**
* struct ethtool_usrip4_spec - general flow specification for IPv4 * struct ethtool_usrip4_spec - general flow specification for IPv4
...@@ -403,10 +390,8 @@ struct ethtool_rx_flow_spec { ...@@ -403,10 +390,8 @@ struct ethtool_rx_flow_spec {
struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec;
struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec;
struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec;
struct ethtool_rawip4_spec raw_ip4_spec;
struct ethtool_ether_spec ether_spec;
struct ethtool_usrip4_spec usr_ip4_spec; struct ethtool_usrip4_spec usr_ip4_spec;
__u8 hdata[64]; __u8 hdata[72];
} h_u, m_u; } h_u, m_u;
__u64 ring_cookie; __u64 ring_cookie;
__u32 location; __u32 location;
...@@ -496,10 +481,8 @@ struct ethtool_rx_ntuple_flow_spec { ...@@ -496,10 +481,8 @@ struct ethtool_rx_ntuple_flow_spec {
struct ethtool_tcpip4_spec sctp_ip4_spec; struct ethtool_tcpip4_spec sctp_ip4_spec;
struct ethtool_ah_espip4_spec ah_ip4_spec; struct ethtool_ah_espip4_spec ah_ip4_spec;
struct ethtool_ah_espip4_spec esp_ip4_spec; struct ethtool_ah_espip4_spec esp_ip4_spec;
struct ethtool_rawip4_spec raw_ip4_spec;
struct ethtool_ether_spec ether_spec;
struct ethtool_usrip4_spec usr_ip4_spec; struct ethtool_usrip4_spec usr_ip4_spec;
__u8 hdata[64]; __u8 hdata[72];
} h_u, m_u; } h_u, m_u;
__u16 vlan_tag; __u16 vlan_tag;
......
...@@ -673,19 +673,19 @@ static int ethtool_get_rx_ntuple(struct net_device *dev, void __user *useraddr) ...@@ -673,19 +673,19 @@ static int ethtool_get_rx_ntuple(struct net_device *dev, void __user *useraddr)
break; break;
case IP_USER_FLOW: case IP_USER_FLOW:
sprintf(p, "\tSrc IP addr: 0x%x\n", sprintf(p, "\tSrc IP addr: 0x%x\n",
fsc->fs.h_u.raw_ip4_spec.ip4src); fsc->fs.h_u.usr_ip4_spec.ip4src);
p += ETH_GSTRING_LEN; p += ETH_GSTRING_LEN;
num_strings++; num_strings++;
sprintf(p, "\tSrc IP mask: 0x%x\n", sprintf(p, "\tSrc IP mask: 0x%x\n",
fsc->fs.m_u.raw_ip4_spec.ip4src); fsc->fs.m_u.usr_ip4_spec.ip4src);
p += ETH_GSTRING_LEN; p += ETH_GSTRING_LEN;
num_strings++; num_strings++;
sprintf(p, "\tDest IP addr: 0x%x\n", sprintf(p, "\tDest IP addr: 0x%x\n",
fsc->fs.h_u.raw_ip4_spec.ip4dst); fsc->fs.h_u.usr_ip4_spec.ip4dst);
p += ETH_GSTRING_LEN; p += ETH_GSTRING_LEN;
num_strings++; num_strings++;
sprintf(p, "\tDest IP mask: 0x%x\n", sprintf(p, "\tDest IP mask: 0x%x\n",
fsc->fs.m_u.raw_ip4_spec.ip4dst); fsc->fs.m_u.usr_ip4_spec.ip4dst);
p += ETH_GSTRING_LEN; p += ETH_GSTRING_LEN;
num_strings++; num_strings++;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment