]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
Fixed vnic issue after saturn reset
authorPradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Tue, 1 Mar 2016 01:45:59 +0000 (01:45 +0000)
committerChuck Anderson <chuck.anderson@oracle.com>
Wed, 16 Mar 2016 15:05:09 +0000 (08:05 -0700)
After saturn reboots uVnic will not recover
The issue happens When a host connected to NM3 via infiniband switch.
The fact here is xve driver sets OPER_DOWN when it losses HEART_BEAT and
there is no way for it set this state back .
Fixing this by disjoining Multicast group once HeartBeat is lost and
joining back once saturn comes back

Orabug: 22862488

Reported-by: Ye Jin <ye.jin@oracle.com>
Signed-off-by: Pradeep Gopanapalli <pradeep.gopanapalli@oracle.com>
Reviewed-by: sajid zia <szia@oracle.com>
Signed-off-by: Qing Huang <qing.huang@oracle.com>
drivers/infiniband/ulp/xsigo/xscore/Makefile
drivers/infiniband/ulp/xsigo/xsvhba/Makefile
drivers/infiniband/ulp/xsigo/xsvnic/Makefile
drivers/infiniband/ulp/xsigo/xve/Makefile
drivers/infiniband/ulp/xsigo/xve/xve_main.c
drivers/infiniband/ulp/xsigo/xve/xve_stats.c

index 765e555d7034eff5fb4d5e8c6b07273c0469861d..00721312de468178705410bbf981aecb214462f7 100644 (file)
@@ -2,7 +2,7 @@ obj-$(CONFIG_INFINIBAND_XSCORE) := xscore.o
 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.r8014\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8016\"
 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
index b91ea2da37207385b4e837a004522ccfb4e0a2e2..a97d7a15e761c62701e0ad2eac606b3cb48ce758 100644 (file)
@@ -3,7 +3,7 @@ xsvhba-y := vhba_main.o vhba_xsmp.o vhba_create.o vhba_init.o vhba_delete.o \
            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.r8014\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8016\"
 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
index 983e7820bb4a520f26d54aebe5d4a95820367f2d..5f853927ff3069b670c1579422031e468bca16be 100644 (file)
@@ -1,7 +1,7 @@
 obj-$(CONFIG_INFINIBAND_XSVNIC) := xsvnic.o
 xsvnic-y := xsvnic_main.o xsvnic_stats.o
 
-ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8014\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8016\"
 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
index f217d4feadb057fd2a51bdad0c34896b04382670..be33126eff94756d936ed164606463d9677b9a87 100644 (file)
@@ -2,7 +2,7 @@ obj-$(CONFIG_INFINIBAND_XVE) := xve.o
 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.r8014\"
+ccflags-y += -DXSIGO_LOCAL_VERSION=\"6.0.r8016\"
 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
index ff1af5d0fa65e762561b960f9d9c58e1d94144a8..ef1639c683019f249c7ffb07a91d561d873df0a3 100644 (file)
@@ -1605,9 +1605,10 @@ static int xve_state_machine(struct xve_dev_priv *priv)
 
                        xve_flush_paths(priv->netdev);
                        spin_lock_irqsave(&priv->lock, flags);
-                       xve_set_oper_down(priv);
+                       /* Disjoin from multicast Group */
                        set_bit(XVE_HBEAT_LOST, &priv->state);
                        spin_unlock_irqrestore(&priv->lock, flags);
+                       xve_queue_work(priv, XVE_WQ_START_FLUSHNORMAL);
                }
                priv->counters[XVE_STATE_MACHINE_UP]++;
                if (!test_bit(XVE_OPER_REP_SENT, &priv->state))
index 7db8fe3812da20d134aba6eabefe85d1e44bc56a..a6d09d9728e31d6a7f52bae8b2ace2e3c169b4c8 100755 (executable)
@@ -449,6 +449,7 @@ static int xve_proc_read_device(struct seq_file *m, void *data)
        tmp_buf[0] = 0;
        print_mgid_buf(tmp_buf, local_gid_token);
 
+       seq_printf(m, "Type:\t\t\t\t%s\n", (vp->vnic_type) ? "EDR" : "Legacy");
        seq_printf(m, "Local gid:\t\t\t%s\n", tmp_buf);
        seq_printf(m, "MAC addr:\t\t\t0x%Lx\n", vp->mac);
        seq_printf(m, "VID:\t\t\t\t0x%Lx\n", vp->resource_id);