diff mbox

[for-next,09/14] {net,IB}/mlx5: Add has_tag to mlx5_flow_act

Message ID 20180305204637.18277-10-saeedm@mellanox.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Saeed Mahameed March 5, 2018, 8:46 p.m. UTC
From: Matan Barak <matanb@mellanox.com>

The has_tag member will indicate whether a tag action was specified
in flow specification.

Signed-off-by: Matan Barak <matanb@mellanox.com>
Reviewed-by: Aviad Yehezkel <aviadye@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
---
 drivers/infiniband/hw/mlx5/main.c                 | 3 ++-
 drivers/net/ethernet/mellanox/mlx5/core/en_tc.c   | 1 +
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 2 +-
 include/linux/mlx5/fs.h                           | 1 +
 4 files changed, 5 insertions(+), 2 deletions(-)

Comments

Jason Gunthorpe March 5, 2018, 9:07 p.m. UTC | #1
On Mon, Mar 05, 2018 at 12:46:32PM -0800, Saeed Mahameed wrote:
> From: Matan Barak <matanb@mellanox.com>
> 
> The has_tag member will indicate whether a tag action was specified
> in flow specification.

It would be good to describe in the commit message why

 flow_act.flow_tag != MLX5_FS_DEFAULT_FLOW_TAG

isn't good enough anymore.

> Signed-off-by: Matan Barak <matanb@mellanox.com>
> Reviewed-by: Aviad Yehezkel <aviadye@mellanox.com>
> Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
>  drivers/infiniband/hw/mlx5/main.c                 | 3 ++-
>  drivers/net/ethernet/mellanox/mlx5/core/en_tc.c   | 1 +
>  drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 2 +-
>  include/linux/mlx5/fs.h                           | 1 +
>  4 files changed, 5 insertions(+), 2 deletions(-)

Assuming there is a good reason to do this:

Acked-by: Jason Gunthorpe <jgg@mellanox.com>

Jason
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Saeed Mahameed March 7, 2018, 6:01 a.m. UTC | #2
T24gTW9uLCAyMDE4LTAzLTA1IGF0IDE0OjA3IC0wNzAwLCBKYXNvbiBHdW50aG9ycGUgd3JvdGU6
DQo+IE9uIE1vbiwgTWFyIDA1LCAyMDE4IGF0IDEyOjQ2OjMyUE0gLTA4MDAsIFNhZWVkIE1haGFt
ZWVkIHdyb3RlOg0KPiA+IEZyb206IE1hdGFuIEJhcmFrIDxtYXRhbmJAbWVsbGFub3guY29tPg0K
PiA+IA0KPiA+IFRoZSBoYXNfdGFnIG1lbWJlciB3aWxsIGluZGljYXRlIHdoZXRoZXIgYSB0YWcg
YWN0aW9uIHdhcyBzcGVjaWZpZWQNCj4gPiBpbiBmbG93IHNwZWNpZmljYXRpb24uDQo+IA0KPiBJ
dCB3b3VsZCBiZSBnb29kIHRvIGRlc2NyaWJlIGluIHRoZSBjb21taXQgbWVzc2FnZSB3aHkNCj4g
DQo+ICBmbG93X2FjdC5mbG93X3RhZyAhPSBNTFg1X0ZTX0RFRkFVTFRfRkxPV19UQUcNCj4gDQo+
IGlzbid0IGdvb2QgZW5vdWdoIGFueW1vcmUuDQoNCkEgZmxvdyB0YWcgMCA9IE1MWDVfRlNfREVG
QVVMVF9GTE9XX1RBRyBpcyBhc3N1bWVkIGEgdmFsaWQgZmxvdyB0YWcNCnRoYXQgaXMgY3VycmVu
dGx5IHVzZWQgYnkgUkRNQSBkcml2ZXIsIHdoZXJlYXMgaW4gSFcgZmxvd190YWcgPSAwIG1lYW5z
DQp0aGF0IHRoZSB1c2VyIGRvZXNuJ3QgY2FyZSBhYm91dCBmbG93X3RhZy4gSFcgYWx3YXlzIHBy
b3ZpZGUgZmxvd190YWcgPQ0KMCBpZiBhbGwgZmxvd190YWdzIHJlcXVlc3RlZCBvbiBhIHNwZWNp
ZmljIGZsb3cgYXJlIDAuDQoNClNvIHdlIG5lZWQgYSB3YXkgKGluIHRoZSBkcml2ZXIpIHRvIGRp
ZmZlcmVudGlhdGUgYmV0d2VlbiBhIHVzZXIgcmVhbGx5DQpyZXF1ZXN0aW5nIGZsb3dfdGFnID0g
MCBhbmQgYSB1c2VyIHdobyBkb2VzIG5vdCBjYXJlLCBpbiBvcmRlciB0byBiZQ0KYWJsZSB0byBy
ZXBvcnQgY29uZmxpY3RpbmcgZmxvdyB0YWdzIG9uIGEgc3BlY2lmaWMgZmxvdy4NCg0KV2Ugd2ls
bCBhZGQgdGhpcyB0byBjb21taXQgbWVzc2FnZS4NCg0KPiANCj4gPiBTaWduZWQtb2ZmLWJ5OiBN
YXRhbiBCYXJhayA8bWF0YW5iQG1lbGxhbm94LmNvbT4NCj4gPiBSZXZpZXdlZC1ieTogQXZpYWQg
WWVoZXprZWwgPGF2aWFkeWVAbWVsbGFub3guY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNhZWVk
IE1haGFtZWVkIDxzYWVlZG1AbWVsbGFub3guY29tPg0KPiA+ICBkcml2ZXJzL2luZmluaWJhbmQv
aHcvbWx4NS9tYWluLmMgICAgICAgICAgICAgICAgIHwgMyArKy0NCj4gPiAgZHJpdmVycy9uZXQv
ZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX3RjLmMgICB8IDEgKw0KPiA+ICBkcml2ZXJz
L25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZnNfY29yZS5jIHwgMiArLQ0KPiA+ICBp
bmNsdWRlL2xpbnV4L21seDUvZnMuaCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMSArDQo+
ID4gIDQgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPiAN
Cj4gQXNzdW1pbmcgdGhlcmUgaXMgYSBnb29kIHJlYXNvbiB0byBkbyB0aGlzOg0KPiANCj4gQWNr
ZWQtYnk6IEphc29uIEd1bnRob3JwZSA8amdnQG1lbGxhbm94LmNvbT4NCj4gDQo+IEphc29u
--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/infiniband/hw/mlx5/main.c b/drivers/infiniband/hw/mlx5/main.c
index 1b305367a817..d50ace805995 100644
--- a/drivers/infiniband/hw/mlx5/main.c
+++ b/drivers/infiniband/hw/mlx5/main.c
@@ -2535,6 +2535,7 @@  static int parse_flow_attr(struct mlx5_core_dev *mdev, u32 *match_c,
 			return -EINVAL;
 
 		action->flow_tag = ib_spec->flow_tag.tag_id;
+		action->has_flow_tag = true;
 		break;
 	case IB_FLOW_SPEC_ACTION_DROP:
 		if (FIELDS_NOT_SUPPORTED(ib_spec->drop,
@@ -2847,7 +2848,7 @@  static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
 		    MLX5_FLOW_CONTEXT_ACTION_FWD_NEXT_PRIO;
 	}
 
-	if (flow_act.flow_tag != MLX5_FS_DEFAULT_FLOW_TAG &&
+	if (flow_act.has_flow_tag &&
 	    (flow_attr->type == IB_FLOW_ATTR_ALL_DEFAULT ||
 	     flow_attr->type == IB_FLOW_ATTR_MC_DEFAULT)) {
 		mlx5_ib_warn(dev, "Flow tag %u and attribute type %x isn't allowed in leftovers\n",
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
index fd98b0dc610f..eeff1fac77ef 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_tc.c
@@ -675,6 +675,7 @@  mlx5e_tc_add_nic_flow(struct mlx5e_priv *priv,
 	struct mlx5_flow_destination dest[2] = {};
 	struct mlx5_flow_act flow_act = {
 		.action = attr->action,
+		.has_flow_tag = true,
 		.flow_tag = attr->flow_tag,
 		.encap_id = 0,
 	};
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
index c025c98700e4..d81da6920be8 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
@@ -1443,7 +1443,7 @@  static int check_conflicting_ftes(struct fs_fte *fte, const struct mlx5_flow_act
 		return -EEXIST;
 	}
 
-	if (fte->flow_tag != flow_act->flow_tag) {
+	if (flow_act->has_flow_tag && fte->flow_tag != flow_act->flow_tag) {
 		mlx5_core_warn(get_dev(&fte->node),
 			       "FTE flow tag %u already exists with different flow tag %u\n",
 			       fte->flow_tag,
diff --git a/include/linux/mlx5/fs.h b/include/linux/mlx5/fs.h
index a0b48afcb422..f580bc4c2443 100644
--- a/include/linux/mlx5/fs.h
+++ b/include/linux/mlx5/fs.h
@@ -141,6 +141,7 @@  void mlx5_destroy_flow_group(struct mlx5_flow_group *fg);
 
 struct mlx5_flow_act {
 	u32 action;
+	bool has_flow_tag;
 	u32 flow_tag;
 	u32 encap_id;
 	u32 modify_id;