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

ethtool: Clean up definitions of rule location arrays in RX NFC

Correct the description of ethtool_rxnfc::rule_locs; it is an array
of currently used locations, not all possible valid locations.

Add note that drivers must not use ethtool_rxnfc::rule_locs.

The rule_locs argument to ethtool_ops::get_rxnfc is either NULL or a
pointer to an array of u32, so change the parameter type accordingly.
Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 434495c5
...@@ -2241,7 +2241,7 @@ static int bnx2x_set_phys_id(struct net_device *dev, ...@@ -2241,7 +2241,7 @@ static int bnx2x_set_phys_id(struct net_device *dev,
} }
static int bnx2x_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, static int bnx2x_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
void *rules __always_unused) u32 *rules __always_unused)
{ {
struct bnx2x *bp = netdev_priv(dev); struct bnx2x *bp = netdev_priv(dev);
......
...@@ -1902,7 +1902,7 @@ static int set_rss_table(struct net_device *dev, ...@@ -1902,7 +1902,7 @@ static int set_rss_table(struct net_device *dev,
} }
static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info, static int get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *info,
void *rules) u32 *rules)
{ {
const struct port_info *pi = netdev_priv(dev); const struct port_info *pi = netdev_priv(dev);
......
...@@ -1712,7 +1712,7 @@ static int gfar_set_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd) ...@@ -1712,7 +1712,7 @@ static int gfar_set_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd)
} }
static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd, static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
void *rule_locs) u32 *rule_locs)
{ {
struct gfar_private *priv = netdev_priv(dev); struct gfar_private *priv = netdev_priv(dev);
int ret = 0; int ret = 0;
...@@ -1728,7 +1728,7 @@ static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd, ...@@ -1728,7 +1728,7 @@ static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
ret = gfar_get_cls(priv, cmd); ret = gfar_get_cls(priv, cmd);
break; break;
case ETHTOOL_GRXCLSRLALL: case ETHTOOL_GRXCLSRLALL:
ret = gfar_get_cls_all(priv, cmd, (u32 *) rule_locs); ret = gfar_get_cls_all(priv, cmd, rule_locs);
break; break;
default: default:
ret = -EINVAL; ret = -EINVAL;
......
...@@ -2287,7 +2287,7 @@ static int ixgbe_get_ethtool_fdir_all(struct ixgbe_adapter *adapter, ...@@ -2287,7 +2287,7 @@ static int ixgbe_get_ethtool_fdir_all(struct ixgbe_adapter *adapter,
} }
static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd, static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
void *rule_locs) u32 *rule_locs)
{ {
struct ixgbe_adapter *adapter = netdev_priv(dev); struct ixgbe_adapter *adapter = netdev_priv(dev);
int ret = -EOPNOTSUPP; int ret = -EOPNOTSUPP;
...@@ -2305,8 +2305,7 @@ static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd, ...@@ -2305,8 +2305,7 @@ static int ixgbe_get_rxnfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
ret = ixgbe_get_ethtool_fdir_entry(adapter, cmd); ret = ixgbe_get_ethtool_fdir_entry(adapter, cmd);
break; break;
case ETHTOOL_GRXCLSRLALL: case ETHTOOL_GRXCLSRLALL:
ret = ixgbe_get_ethtool_fdir_all(adapter, cmd, ret = ixgbe_get_ethtool_fdir_all(adapter, cmd, rule_locs);
(u32 *)rule_locs);
break; break;
default: default:
break; break;
......
...@@ -824,7 +824,7 @@ static int efx_ethtool_reset(struct net_device *net_dev, u32 *flags) ...@@ -824,7 +824,7 @@ static int efx_ethtool_reset(struct net_device *net_dev, u32 *flags)
static int static int
efx_ethtool_get_rxnfc(struct net_device *net_dev, efx_ethtool_get_rxnfc(struct net_device *net_dev,
struct ethtool_rxnfc *info, void *rules __always_unused) struct ethtool_rxnfc *info, u32 *rules __always_unused)
{ {
struct efx_nic *efx = netdev_priv(net_dev); struct efx_nic *efx = netdev_priv(net_dev);
......
...@@ -7303,7 +7303,7 @@ static int niu_get_ethtool_tcam_all(struct niu *np, ...@@ -7303,7 +7303,7 @@ static int niu_get_ethtool_tcam_all(struct niu *np,
} }
static int niu_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd, static int niu_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
void *rule_locs) u32 *rule_locs)
{ {
struct niu *np = netdev_priv(dev); struct niu *np = netdev_priv(dev);
int ret = 0; int ret = 0;
...@@ -7322,7 +7322,7 @@ static int niu_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd, ...@@ -7322,7 +7322,7 @@ static int niu_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
ret = niu_get_ethtool_tcam_entry(np, cmd); ret = niu_get_ethtool_tcam_entry(np, cmd);
break; break;
case ETHTOOL_GRXCLSRLALL: case ETHTOOL_GRXCLSRLALL:
ret = niu_get_ethtool_tcam_all(np, cmd, (u32 *)rule_locs); ret = niu_get_ethtool_tcam_all(np, cmd, rule_locs);
break; break;
default: default:
ret = -EINVAL; ret = -EINVAL;
......
...@@ -558,7 +558,7 @@ vmxnet3_set_ringparam(struct net_device *netdev, ...@@ -558,7 +558,7 @@ vmxnet3_set_ringparam(struct net_device *netdev,
static int static int
vmxnet3_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info, vmxnet3_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
void *rules) u32 *rules)
{ {
struct vmxnet3_adapter *adapter = netdev_priv(netdev); struct vmxnet3_adapter *adapter = netdev_priv(netdev);
switch (info->cmd) { switch (info->cmd) {
......
...@@ -479,7 +479,7 @@ struct ethtool_rx_flow_spec { ...@@ -479,7 +479,7 @@ struct ethtool_rx_flow_spec {
* @data: Command-dependent value * @data: Command-dependent value
* @fs: Flow classification rule * @fs: Flow classification rule
* @rule_cnt: Number of rules to be affected * @rule_cnt: Number of rules to be affected
* @rule_locs: Array of valid rule locations * @rule_locs: Array of used rule locations
* *
* For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating * For %ETHTOOL_GRXFH and %ETHTOOL_SRXFH, @data is a bitmask indicating
* the fields included in the flow hash, e.g. %RXH_IP_SRC. The following * the fields included in the flow hash, e.g. %RXH_IP_SRC. The following
...@@ -497,7 +497,8 @@ struct ethtool_rx_flow_spec { ...@@ -497,7 +497,8 @@ struct ethtool_rx_flow_spec {
* For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
* user buffer for @rule_locs on entry. On return, @data is the size * user buffer for @rule_locs on entry. On return, @data is the size
* of the rule table and @rule_locs contains the locations of the * of the rule table and @rule_locs contains the locations of the
* defined rules. * defined rules. Drivers must use the second parameter to get_rxnfc()
* instead of @rule_locs.
* *
* For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update. * For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update.
* @fs.@location specifies the location to use and must not be ignored. * @fs.@location specifies the location to use and must not be ignored.
...@@ -939,7 +940,7 @@ struct ethtool_ops { ...@@ -939,7 +940,7 @@ struct ethtool_ops {
int (*set_priv_flags)(struct net_device *, u32); int (*set_priv_flags)(struct net_device *, u32);
int (*get_sset_count)(struct net_device *, int); int (*get_sset_count)(struct net_device *, int);
int (*get_rxnfc)(struct net_device *, int (*get_rxnfc)(struct net_device *,
struct ethtool_rxnfc *, void *); struct ethtool_rxnfc *, u32 *rule_locs);
int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
int (*flash_device)(struct net_device *, struct ethtool_flash *); int (*flash_device)(struct net_device *, struct ethtool_flash *);
int (*reset)(struct net_device *, u32 *); int (*reset)(struct net_device *, u32 *);
......
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