Hi Brian, Sorry for delayed response; > > @@ -1348,6 +1348,8 @@ static void mwifiex_usb_cleanup_tx_aggr(struct > > mwifiex_adapter *adapter) > > > > for (idx = 0; idx < MWIFIEX_TX_DATA_PORT; idx++) { > > port = &card->port[idx]; > > + if (!port->tx_data_ep) > > + continue; > > It's not clear to me what this is about. Are you sure you're not just cleaning > stuff up in the wrong order? OK; > > > if (adapter->bus_aggr.enable) > > while ((skb_tmp = > > skb_dequeue(&port->tx_aggr.aggr_list))) > > ... > > > @@ -1584,7 +1580,29 @@ static void > mwifiex_usb_submit_rem_rx_urbs(struct mwifiex_adapter *adapter) > > return 0; > > } > > > > +static int mwifiex_init_usb(struct mwifiex_adapter *adapter) { > > + struct usb_card_rec *card = (struct usb_card_rec *)adapter->card; > > + int ret = 0; > > + > > + if (card->usb_boot_state == USB8XXX_FW_DNLD) > > + return 0; > > This looks wrong. You don't want to skip your basic initialization just because > firmware isn't loaded yet. In fact, init_if() always gets called before FW init, > so haven't you basically stubbed out this function most of the time? I think, we are not skipping the basic initialization: original flow: PID_1: mwifiex_usb_probe >>> "do driver initialization" >>> "download the firmware" PID_2: mwifiex_usb_probe >>> "do driver initialization" >>> "do interface initialization" >>> "do firmware initialization" new flow: PID_1: mwifiex_usb_probe >>> "do driver initialization" >>> "download the firmware" PID_2: mwifiex_usb_probe >>> "do interface initialization" >>> "do driver initialization" >>> "do firmware initialization" > > I guess the question is: is this step supposed to go before, or after firmware > initilization? Based on that answer, we can make an appropriate patch. It was before firmware initialization, in the existing driver( and the new change also follows this); > > (The original code does this after FW initialization, and now you're only sort > of moving it before.) I don't think so; as per the above flow, things which we moved to init_if() were previously done in mwifiex_usb_dnld_fw(), just before it return(for PID_2); FW initialization (mwifiex_init_fw()) happens after that; Regards, Ganapathi