Orabug:
24442792
Sometime uVNIC removal on OFOS won't trigger a actual removal
of Vstar interface, in that case uVNIC driver has to send NACK
code so that XCM will start cleaning its database.
Added additional codes as per XCM specification
Reported-by: jie zhu <jie.x.zhu@oracle.com>
Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Reviewed-by: Qingjun Wang <qingjun.wang@oracle.com>
Reviewed-by: Manish Kumar Singh <mk.singh@oracle.com>
Reviewed-by: UmaShankar Tumari Mahabalagiri <umashankar.mahabalagiri@oracle.com>
xscore-y := xscore_impl.o xs_ud.o xscore_api.o xsmp.o \
xscore_stats.o xscore_uadm.o
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8034\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8035\"
ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
vhba_attr.o vhba_wq.o vhba_proc.o vhba_stats.o vhba_ib.o \
vhba_scsi_intf.o vhba_align.o
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8034\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8035\"
ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
obj-$(CONFIG_INFINIBAND_XSVNIC) := xsvnic.o
xsvnic-y := xsvnic_main.o xsvnic_stats.o
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8034\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8035\"
ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
xve-y := xve_main.o xve_verbs.o xve_multicast.o xve_ib.o xve_tables.o \
xve_ethtool.o xve_cm.o xve_stats.o
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8034\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8035\"
ccflags-y += -DRDMA_PORT_LINK_LAYER_CHANGES -DHAS_SKB_ACCESS_FUNCTIONS
ccflags-y += -DSCSI_STRUCT_CHANGES -DSCSI_TIMEOUT_CHANGES -DLLE
ccflags-y += -DXG_FRAG_SIZE_PRESENT -DXG_FRAG_PAGE_PRESENT
pr_info("MTU%d %s\n", be16_to_cpu(xmsgp->vn_mtu),
xmsgp->xve_name);
ret = -EINVAL;
- ecode = XVE_INVALID_OPERATION;
+ ecode = XVE_NACK_IB_MTU_MISMATCH;
goto dup_error;
}
}
(xsmp_hndl, xmsgp->xve_name, XSMP_MESSAGE_TYPE_VNIC) != 0) {
pr_info("%s Duplicate name %s\n", __func__, xmsgp->xve_name);
ret = -EEXIST;
+ /* send VID to xmsgp*/
+ priv = xve_get_xve_by_name(xmsgp->xve_name);
+ if (priv)
+ xmsgp->tca_subnet_prefix =
+ cpu_to_be64(priv->resource_id);
+ ecode = XVE_NACK_DUP_NAME;
goto dup_error;
}
__func__, xmsgp->xve_name,
be64_to_cpu(xmsgp->resource_id));
ret = -EEXIST;
+ /* send VID to xmsgp*/
+ ecode = XVE_NACK_DUP_NAME;
+ xmsgp->tca_subnet_prefix = cpu_to_be64(priv->resource_id);
goto dup_error;
}
#define XVE_NACK_LIMIT_REACHED 3 /* Max number of XVEs reached */
#define XVE_NACK_ALLOCATION_ERROR 4 /* Error during instantiation */
#define XVE_INVALID_OPERATION 6 /* Invalid Install message */
-#define XVE_NACK_CODE_MAX 7
+#define XVE_NACK_IB_MTU_MISMATCH 20
/* The common XVE XSMP header for all messages */
struct xve_xsmp_header {