Re: [PATCH net-next 09/10] net/mlx4_en: Manage flow steering rules with ethtool
From: Joe Perches <joe@perches.com>
Date: 2012-07-01 16:38:07
On Sun, 2012-07-01 at 17:00 +0100, Ben Hutchings wrote:
On Sun, 2012-07-01 at 12:43 +0300, Or Gerlitz wrote:quoted
From: Hadar Hen Zion <redacted>
[]
quoted
diff --git a/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c b/drivers/net/ethernet/mellanox/mlx4/en_ethtool.c
[]
quoted
@@ -599,16 +603,360 @@ static int mlx4_en_set_rxfh_indir(struct net_device *dev, return err; } +#define not_all_zeros_or_all_ones(field, type) \ + (field && (type)~field)
I think this macro is suboptimal because
negated names are easy to misuse.
I think type is also unnecessary and too
easy to mismatch or keep up to date with
field type changes.
Perhaps it's better as:
#define all_zeros_or_all_ones(field) \
({ \
field && (typeof(field))~field; \
})
quoted
+ +static int mlx4_en_validate_flow(struct net_device *dev, + struct ethtool_rxnfc *cmd) +{
[]
quoted
+ /* don't allow mask which isn't all 0 or 1 */ + if (not_all_zeros_or_all_ones(l4_mask->ip4src, __be32) || + not_all_zeros_or_all_ones(l4_mask->ip4dst, __be32) || + not_all_zeros_or_all_ones(l4_mask->psrc, __be16) || + not_all_zeros_or_all_ones(l4_mask->pdst, __be16)) + return -EOPNOTSUPP;
if (!all_zeros_or_all_ones(l4_mask->ip4src) || !all_zeros_or_all_ones(l4_mask->ip4dst) || !all_zeros_or_all_ones(l4_mask->psrc) || !all_zeros_or_all_ones(l4_mask->pdst))