ethtool: Clean up definitions of rule location arrays in RX NFC
authorBen Hutchings <bhutchings@solarflare.com>
Tue, 6 Sep 2011 13:49:12 +0000 (13:49 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 16 Sep 2011 23:25:10 +0000 (19:25 -0400)
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: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnx2x/bnx2x_ethtool.c
drivers/net/ethernet/chelsio/cxgb4/cxgb4_main.c
drivers/net/ethernet/freescale/gianfar_ethtool.c
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
drivers/net/ethernet/sfc/ethtool.c
drivers/net/ethernet/sun/niu.c
drivers/net/vmxnet3/vmxnet3_ethtool.c
include/linux/ethtool.h

index 767c229..ce14f11 100644 (file)
@@ -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);
 
index 90b4921..40b395f 100644 (file)
@@ -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);
 
index 25a8c2a..4223830 100644 (file)
@@ -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);
        int ret = 0;
 {
        struct gfar_private *priv = netdev_priv(dev);
        int ret = 0;
@@ -1728,7 +1728,7 @@ static int gfar_get_nfc(struct net_device *dev, struct ethtool_rxnfc *cmd,
                ret = gfar_get_cls(priv, cmd);
                break;
        case ETHTOOL_GRXCLSRLALL:
                ret = gfar_get_cls(priv, cmd);
                break;
        case ETHTOOL_GRXCLSRLALL:
-               ret = gfar_get_cls_all(priv, cmd, (u32 *) rule_locs);
+               ret = gfar_get_cls_all(priv, cmd, rule_locs);
                break;
        default:
                ret = -EINVAL;
                break;
        default:
                ret = -EINVAL;
index 11e1d5c..c0003ba 100644 (file)
@@ -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);
        int ret = -EOPNOTSUPP;
 {
        struct ixgbe_adapter *adapter = netdev_priv(dev);
        int ret = -EOPNOTSUPP;
@@ -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);
                break;
        case ETHTOOL_GRXCLSRLALL:
                ret = ixgbe_get_ethtool_fdir_entry(adapter, cmd);
                break;
        case ETHTOOL_GRXCLSRLALL:
-               ret = ixgbe_get_ethtool_fdir_all(adapter, cmd,
-                                                (u32 *)rule_locs);
+               ret = ixgbe_get_ethtool_fdir_all(adapter, cmd, rule_locs);
                break;
        default:
                break;
                break;
        default:
                break;
index 93f1fb9..9536925 100644 (file)
@@ -824,7 +824,7 @@ static int efx_ethtool_reset(struct net_device *net_dev, u32 *flags)
 
 static int
 efx_ethtool_get_rxnfc(struct net_device *net_dev,
 
 static int
 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);
 
index cad58f2..5e1e1d2 100644 (file)
@@ -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);
        int ret = 0;
 {
        struct niu *np = netdev_priv(dev);
        int ret = 0;
@@ -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);
                break;
        case ETHTOOL_GRXCLSRLALL:
                ret = niu_get_ethtool_tcam_entry(np, cmd);
                break;
        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;
        default:
                ret = -EINVAL;
                break;
        default:
                ret = -EINVAL;
index 27400ed..e662cbc 100644 (file)
@@ -558,7 +558,7 @@ out:
 
 static int
 vmxnet3_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
 
 static int
 vmxnet3_get_rxnfc(struct net_device *netdev, struct ethtool_rxnfc *info,
-                 void *rules)
+                 u32 *rules)
 {
        struct vmxnet3_adapter *adapter = netdev_priv(netdev);
        switch (info->cmd) {
 {
        struct vmxnet3_adapter *adapter = netdev_priv(netdev);
        switch (info->cmd) {
index b5d1893..5d4a06a 100644 (file)
@@ -479,7 +479,7 @@ struct ethtool_rx_flow_spec {
  * @data: Command-dependent value
  * @fs: Flow classification rule
  * @rule_cnt: Number of rules to be affected
  * @data: Command-dependent value
  * @fs: Flow classification rule
  * @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
  * the fields included in the flow hash, e.g. %RXH_IP_SRC.  The following
  *
  * 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
@@ -497,7 +497,8 @@ struct ethtool_rx_flow_spec {
  * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
  * 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
  * For %ETHTOOL_GRXCLSRLALL, @rule_cnt specifies the array size of the
  * 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
- * 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.
  * @fs.@location specifies the location to use and must not be ignored.
  *
  * For %ETHTOOL_SRXCLSRLINS, @fs specifies the rule to add or update.
  * @fs.@location specifies the location to use and must not be ignored.
@@ -939,7 +940,7 @@ struct ethtool_ops {
        int     (*set_priv_flags)(struct net_device *, u32);
        int     (*get_sset_count)(struct net_device *, int);
        int     (*get_rxnfc)(struct net_device *,
        int     (*set_priv_flags)(struct net_device *, u32);
        int     (*get_sset_count)(struct net_device *, int);
        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     (*flash_device)(struct net_device *, struct ethtool_flash *);
        int     (*reset)(struct net_device *, u32 *);
        int     (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *);
        int     (*flash_device)(struct net_device *, struct ethtool_flash *);
        int     (*reset)(struct net_device *, u32 *);