@@ -1914,8 +1914,6 @@ static netdev_tx_t ibmvnic_xmit(struct sk_buff *skb, struct net_device *netdev)
19141914 ind_bufp = & tx_scrq -> ind_buf ;
19151915
19161916 if (test_bit (0 , & adapter -> resetting )) {
1917- if (!netif_subqueue_stopped (netdev , skb ))
1918- netif_stop_subqueue (netdev , queue_num );
19191917 dev_kfree_skb_any (skb );
19201918
19211919 tx_send_failed ++ ;
@@ -2757,7 +2755,7 @@ static int ibmvnic_reset(struct ibmvnic_adapter *adapter,
27572755
27582756 if (adapter -> state == VNIC_PROBING ) {
27592757 netdev_warn (netdev , "Adapter reset during probe\n" );
2760- adapter -> init_done_rc = EAGAIN ;
2758+ adapter -> init_done_rc = - EAGAIN ;
27612759 ret = EAGAIN ;
27622760 goto err ;
27632761 }
@@ -5259,11 +5257,6 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
52595257 */
52605258 adapter -> login_pending = false;
52615259
5262- if (!completion_done (& adapter -> init_done )) {
5263- complete (& adapter -> init_done );
5264- adapter -> init_done_rc = - EIO ;
5265- }
5266-
52675260 if (adapter -> state == VNIC_DOWN )
52685261 rc = ibmvnic_reset (adapter , VNIC_RESET_PASSIVE_INIT );
52695262 else
@@ -5284,6 +5277,13 @@ static void ibmvnic_handle_crq(union ibmvnic_crq *crq,
52845277 rc );
52855278 adapter -> failover_pending = false;
52865279 }
5280+
5281+ if (!completion_done (& adapter -> init_done )) {
5282+ complete (& adapter -> init_done );
5283+ if (!adapter -> init_done_rc )
5284+ adapter -> init_done_rc = - EAGAIN ;
5285+ }
5286+
52875287 break ;
52885288 case IBMVNIC_CRQ_INIT_COMPLETE :
52895289 dev_info (dev , "Partner initialization complete\n" );
@@ -5604,6 +5604,9 @@ static int init_crq_queue(struct ibmvnic_adapter *adapter)
56045604 crq -> cur = 0 ;
56055605 spin_lock_init (& crq -> lock );
56065606
5607+ /* process any CRQs that were queued before we enabled interrupts */
5608+ tasklet_schedule (& adapter -> tasklet );
5609+
56075610 return retrc ;
56085611
56095612req_irq_failed :
@@ -5753,7 +5756,7 @@ static int ibmvnic_probe(struct vio_dev *dev, const struct vio_device_id *id)
57535756 }
57545757
57555758 rc = ibmvnic_reset_init (adapter , false);
5756- } while (rc == EAGAIN );
5759+ } while (rc == - EAGAIN );
57575760
57585761 /* We are ignoring the error from ibmvnic_reset_init() assuming that the
57595762 * partner is not ready. CRQ is not active. When the partner becomes
0 commit comments