Skip to content

Commit

Permalink
ethtool: Remove unimplemented flow specification types
Browse files Browse the repository at this point in the history
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: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Ben Hutchings authored and davem330 committed Sep 15, 2010
1 parent e035587 commit e0de7c9
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 37 deletions.
19 changes: 5 additions & 14 deletions drivers/net/niu.c
Original file line number Diff line number Diff line change
Expand Up @@ -7462,10 +7462,12 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
if (fsp->flow_type == IP_USER_FLOW) {
int i;
int add_usr_cls = 0;
int ipv6 = 0;
struct ethtool_usrip4_spec *uspec = &fsp->h_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);

for (i = 0; i < NIU_L3_PROG_CLS; i++) {
Expand Down Expand Up @@ -7494,9 +7496,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
default:
break;
}
if (uspec->ip_ver == ETH_RX_NFC_IP6)
ipv6 = 1;
ret = tcam_user_ip_class_set(np, class, ipv6,
ret = tcam_user_ip_class_set(np, class, 0,
uspec->proto,
uspec->tos,
umask->tos);
Expand Down Expand Up @@ -7553,16 +7553,7 @@ static int niu_add_ethtool_tcam_entry(struct niu *np,
ret = -EINVAL;
goto out;
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);
} 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;
}
niu_get_tcamkey_from_ip4fs(fsp, tp, l2_rdc_table, class);
break;
default:
netdev_info(np->dev, "niu%d: In %s(): Unknown flow type %d\n",
Expand Down
21 changes: 2 additions & 19 deletions include/linux/ethtool.h
Original file line number Diff line number Diff line change
Expand Up @@ -353,20 +353,7 @@ struct ethtool_ah_espip4_spec {
__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_IP6 2

/**
* struct ethtool_usrip4_spec - general flow specification for IPv4
Expand Down Expand Up @@ -403,10 +390,8 @@ struct ethtool_rx_flow_spec {
struct ethtool_tcpip4_spec sctp_ip4_spec;
struct ethtool_ah_espip4_spec ah_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;
__u8 hdata[64];
__u8 hdata[72];
} h_u, m_u;
__u64 ring_cookie;
__u32 location;
Expand Down Expand Up @@ -496,10 +481,8 @@ struct ethtool_rx_ntuple_flow_spec {
struct ethtool_tcpip4_spec sctp_ip4_spec;
struct ethtool_ah_espip4_spec ah_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;
__u8 hdata[64];
__u8 hdata[72];
} h_u, m_u;

__u16 vlan_tag;
Expand Down
8 changes: 4 additions & 4 deletions net/core/ethtool.c
Original file line number Diff line number Diff line change
Expand Up @@ -673,19 +673,19 @@ static int ethtool_get_rx_ntuple(struct net_device *dev, void __user *useraddr)
break;
case IP_USER_FLOW:
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;
num_strings++;
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;
num_strings++;
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;
num_strings++;
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;
num_strings++;
break;
Expand Down

0 comments on commit e0de7c9

Please sign in to comment.