Lines Matching refs:pDev

236 static u8 QMIXactionIDGet( sGobiUSBNet *pDev)  in QMIXactionIDGet()  argument
240 if( 0 == (transactionID = atomic_add_return( 1, &pDev->mQMIDev.mQMICTLTransactionID)) ) in QMIXactionIDGet()
242 transactionID = atomic_add_return( 1, &pDev->mQMIDev.mQMICTLTransactionID ); in QMIXactionIDGet()
251 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags ); in QMIXactionIDGet()
252 while (PopFromReadMemList( pDev, in QMIXactionIDGet()
260 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags ); in QMIXactionIDGet()
303 static bool IsDeviceValid( sGobiUSBNet * pDev ) in IsDeviceValid() argument
305 if (pDev == NULL) in IsDeviceValid()
310 if (pDev->mbQMIValid == false) in IsDeviceValid()
389 sGobiUSBNet * pDev, in QuecGobiSetDownReason() argument
392 DBG("%s reason=%d, mDownReason=%x\n", __func__, reason, (unsigned)pDev->mDownReason); in QuecGobiSetDownReason()
399 set_bit( reason, &pDev->mDownReason ); in QuecGobiSetDownReason()
401 netif_carrier_off( pDev->mpNetDev->net ); in QuecGobiSetDownReason()
419 sGobiUSBNet * pDev, in QuecGobiClearDownReason() argument
422 clear_bit( reason, &pDev->mDownReason ); in QuecGobiClearDownReason()
424 DBG("%s reason=%d, mDownReason=%x\n", __func__, reason, (unsigned)pDev->mDownReason); in QuecGobiClearDownReason()
426 netif_carrier_on( pDev->mpNetDev->net ); in QuecGobiClearDownReason()
428 if (pDev->mDownReason == 0) in QuecGobiClearDownReason()
431 if (pDev->qmap_mode && !pDev->link_state) in QuecGobiClearDownReason()
435 netif_carrier_on( pDev->mpNetDev->net ); in QuecGobiClearDownReason()
455 sGobiUSBNet * pDev, in QuecGobiTestDownReason() argument
458 return test_bit( reason, &pDev->mDownReason ); in QuecGobiTestDownReason()
584 sGobiUSBNet * pDev; in ReadCallback() local
594 pDev = pReadURB->context; in ReadCallback()
595 if (IsDeviceValid( pDev ) == false) in ReadCallback()
602 del_timer(&pDev->mQMIDev.mReadUrbTimer); in ReadCallback()
612 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
619 if(MergeRecQmiMsg(&pDev->mQMIDev, pReadURB)) in ReadCallback()
623 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
649 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
662 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
678 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags ); in ReadCallback()
682 pClientMem = pDev->mQMIDev.mpClientMemList; in ReadCallback()
696 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags ); in ReadCallback()
699 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
706 if (AddToReadMemList( pDev, in ReadCallback()
717 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags ); in ReadCallback()
720 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
731 NotifyAndPopNotifyList( pDev, in ReadCallback()
750 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags ); in ReadCallback()
753 ResubmitIntURB( pDev->mQMIDev.mpIntURB ); in ReadCallback()
779 sGobiUSBNet * pDev = (sGobiUSBNet *)pIntURB->context; local
780 dr = (struct usb_cdc_notification *)pDev->mQMIDev.mpIntBuffer;
782 if (IsDeviceValid( pDev ) == false)
811 usb_fill_control_urb( pDev->mQMIDev.mpReadURB,
812 pDev->mpNetDev->udev,
813 usb_rcvctrlpipe( pDev->mpNetDev->udev, 0 ),
814 (unsigned char *)pDev->mQMIDev.mpReadSetupPacket,
815 pDev->mQMIDev.mpReadBuffer,
818 pDev );
820 mod_timer( &pDev->mQMIDev.mReadUrbTimer, jiffies + msecs_to_jiffies(300) );
822 status = usb_submit_urb( pDev->mQMIDev.mpReadURB, GFP_ATOMIC );
843 GobiSetDownReason( pDev, CDC_CONNECTION_SPEED );
848 GobiClearDownReason( pDev, CDC_CONNECTION_SPEED );
901 int QuecStartRead( sGobiUSBNet * pDev ) argument
906 if (IsDeviceValid( pDev ) == false)
913 pDev->mQMIDev.mpReadURB = usb_alloc_urb( 0, GFP_KERNEL );
914 if (pDev->mQMIDev.mpReadURB == NULL)
921 …setup_timer( &pDev->mQMIDev.mReadUrbTimer, (void*)ReadUrbTimerFunc, (unsigned long)pDev->mQMIDev.m…
924 pDev->mQMIDev.mpIntURB = usb_alloc_urb( 0, GFP_KERNEL );
925 if (pDev->mQMIDev.mpIntURB == NULL)
928 usb_free_urb( pDev->mQMIDev.mpReadURB );
929 pDev->mQMIDev.mpReadURB = NULL;
934 pDev->mQMIDev.mpReadBuffer = kmalloc( DEFAULT_READ_URB_LENGTH, GFP_KERNEL );
935 if (pDev->mQMIDev.mpReadBuffer == NULL)
938 usb_free_urb( pDev->mQMIDev.mpIntURB );
939 pDev->mQMIDev.mpIntURB = NULL;
940 usb_free_urb( pDev->mQMIDev.mpReadURB );
941 pDev->mQMIDev.mpReadURB = NULL;
945 pDev->mQMIDev.mpIntBuffer = kmalloc( 64, GFP_KERNEL );
946 if (pDev->mQMIDev.mpIntBuffer == NULL)
949 kfree( pDev->mQMIDev.mpReadBuffer );
950 pDev->mQMIDev.mpReadBuffer = NULL;
951 usb_free_urb( pDev->mQMIDev.mpIntURB );
952 pDev->mQMIDev.mpIntURB = NULL;
953 usb_free_urb( pDev->mQMIDev.mpReadURB );
954 pDev->mQMIDev.mpReadURB = NULL;
958 pDev->mQMIDev.mpReadSetupPacket = kmalloc( sizeof( sURBSetupPacket ),
960 if (pDev->mQMIDev.mpReadSetupPacket == NULL)
963 kfree( pDev->mQMIDev.mpIntBuffer );
964 pDev->mQMIDev.mpIntBuffer = NULL;
965 kfree( pDev->mQMIDev.mpReadBuffer );
966 pDev->mQMIDev.mpReadBuffer = NULL;
967 usb_free_urb( pDev->mQMIDev.mpIntURB );
968 pDev->mQMIDev.mpIntURB = NULL;
969 usb_free_urb( pDev->mQMIDev.mpReadURB );
970 pDev->mQMIDev.mpReadURB = NULL;
975 pDev->mQMIDev.mpReadSetupPacket->mRequestType = 0xA1;
976 pDev->mQMIDev.mpReadSetupPacket->mRequestCode = 1;
977 pDev->mQMIDev.mpReadSetupPacket->mValue = 0;
978 pDev->mQMIDev.mpReadSetupPacket->mIndex =
979 cpu_to_le16(pDev->mpIntf->cur_altsetting->desc.bInterfaceNumber); /* interface number */
980 pDev->mQMIDev.mpReadSetupPacket->mLength = cpu_to_le16(DEFAULT_READ_URB_LENGTH);
982 pendp = GetEndpoint(pDev->mpIntf, USB_ENDPOINT_XFER_INT, USB_DIR_IN);
986 kfree(pDev->mQMIDev.mpReadSetupPacket);
987 pDev->mQMIDev.mpReadSetupPacket = NULL;
988 kfree( pDev->mQMIDev.mpIntBuffer );
989 pDev->mQMIDev.mpIntBuffer = NULL;
990 kfree( pDev->mQMIDev.mpReadBuffer );
991 pDev->mQMIDev.mpReadBuffer = NULL;
992 usb_free_urb( pDev->mQMIDev.mpIntURB );
993 pDev->mQMIDev.mpIntURB = NULL;
994 usb_free_urb( pDev->mQMIDev.mpReadURB );
995 pDev->mQMIDev.mpReadURB = NULL;
1000 pDev->mQMIDev.mpQmiMsgPacket = kmalloc( sizeof(sQMIMsgPacket), GFP_KERNEL );
1001 if (pDev->mQMIDev.mpQmiMsgPacket == NULL)
1004 kfree(pDev->mQMIDev.mpReadSetupPacket);
1005 pDev->mQMIDev.mpReadSetupPacket = NULL;
1006 kfree( pDev->mQMIDev.mpIntBuffer );
1007 pDev->mQMIDev.mpIntBuffer = NULL;
1008 kfree( pDev->mQMIDev.mpReadBuffer );
1009 pDev->mQMIDev.mpReadBuffer = NULL;
1010 usb_free_urb( pDev->mQMIDev.mpIntURB );
1011 pDev->mQMIDev.mpIntURB = NULL;
1012 usb_free_urb( pDev->mQMIDev.mpReadURB );
1013 pDev->mQMIDev.mpReadURB = NULL;
1020 (pDev->mpNetDev->udev->speed == USB_SPEED_HIGH) ? 7 : 3);
1026 usb_fill_int_urb( pDev->mQMIDev.mpIntURB,
1027 pDev->mpNetDev->udev,
1031 usb_rcvintpipe( pDev->mpNetDev->udev,
1033 pDev->mQMIDev.mpIntBuffer,
1036 pDev,
1038 return usb_submit_urb( pDev->mQMIDev.mpIntURB, GFP_KERNEL );
1054 void QuecKillRead( sGobiUSBNet * pDev ) argument
1057 if (pDev->mQMIDev.mpReadURB != NULL)
1060 usb_kill_urb( pDev->mQMIDev.mpReadURB );
1063 if (pDev->mQMIDev.mpIntURB != NULL)
1066 usb_kill_urb( pDev->mQMIDev.mpIntURB );
1070 kfree( pDev->mQMIDev.mpReadSetupPacket );
1071 pDev->mQMIDev.mpReadSetupPacket = NULL;
1072 kfree( pDev->mQMIDev.mpReadBuffer );
1073 pDev->mQMIDev.mpReadBuffer = NULL;
1074 kfree( pDev->mQMIDev.mpIntBuffer );
1075 pDev->mQMIDev.mpIntBuffer = NULL;
1078 usb_free_urb( pDev->mQMIDev.mpReadURB );
1079 pDev->mQMIDev.mpReadURB = NULL;
1080 usb_free_urb( pDev->mQMIDev.mpIntURB );
1081 pDev->mQMIDev.mpIntURB = NULL;
1084 kfree( pDev->mQMIDev.mpQmiMsgPacket );
1085 pDev->mQMIDev.mpQmiMsgPacket = NULL;
1114 sGobiUSBNet * pDev, argument
1125 if (IsDeviceValid( pDev ) == false)
1132 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1135 pClientMem = FindClientMem( pDev, clientID );
1142 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1156 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1159 pCallback( pDev, clientID, pData );
1169 if (AddToNotifyList( pDev,
1179 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1207 sGobiUSBNet * pDev, argument
1242 sGobiUSBNet * pDev, argument
1255 if (IsDeviceValid( pDev ) == false)
1262 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1265 pClientMem = FindClientMem( pDev, clientID );
1272 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1278 while (PopFromReadMemList( pDev,
1289 if (AddToNotifyList( pDev,
1296 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1301 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1316 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1335 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1340 if (IsDeviceValid( pDev ) == false)
1347 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1351 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1412 sGobiUSBNet * pDev, argument
1423 if (IsDeviceValid( pDev ) == false)
1449 writeSetup->mIndex = cpu_to_le16(pDev->mpIntf->cur_altsetting->desc.bInterfaceNumber);
1454 pDev->mpNetDev->udev,
1455 usb_sndctrlpipe( pDev->mpNetDev->udev, 0 ),
1460 pDev );
1471 result = usb_autopm_get_interface( pDev->mpIntf );
1482 pDev->mpNetDev->udev->auto_pm = 0;
1485 QuecGobiNetSuspend( pDev->mpIntf, PMSG_SUSPEND );
1495 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1497 if (AddToURBList( pDev, clientID, pWriteURB ) == false)
1503 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1504 usb_autopm_put_interface( pDev->mpIntf );
1508 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1510 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1517 if (PopFromURBList( pDev, clientID ) != pWriteURB)
1530 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1531 usb_autopm_put_interface( pDev->mpIntf );
1536 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1557 usb_autopm_put_interface( pDev->mpIntf );
1560 if (IsDeviceValid( pDev ) == false)
1573 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1576 if (PopFromURBList( pDev, clientID ) != pWriteURB)
1582 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1592 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1648 sGobiUSBNet * pDev, argument
1661 if (IsDeviceValid( pDev ) == false)
1677 transactionID = QMIXactionIDGet( pDev );
1690 result = WriteSync( pDev,
1701 result = ReadSync( pDev,
1738 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1741 if (FindClientMem( pDev, clientID ) != NULL)
1746 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1751 ppClientMem = &pDev->mQMIDev.mpClientMemList;
1764 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1778 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1798 sGobiUSBNet * pDev, argument
1815 if (IsDeviceValid( pDev ) == false)
1824 if (clientID != QMICTL && pDev->mpNetDev->udev->state)
1837 transactionID = QMIXactionIDGet( pDev );
1850 result = WriteSync( pDev,
1862 result = ReadSync( pDev,
1891 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1894 ppDelClientMem = &pDev->mQMIDev.mpClientMemList;
1902 while (NotifyAndPopNotifyList( pDev,
1907 pDelURB = PopFromURBList( pDev, clientID );
1910 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1913 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
1914 pDelURB = PopFromURBList( pDev, clientID );
1918 while (PopFromReadMemList( pDev,
1944 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
1967 sGobiUSBNet * pDev, argument
1972 if (IsDeviceValid( pDev ) == false)
1980 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
1987 pClientMem = pDev->mQMIDev.mpClientMemList;
2024 sGobiUSBNet * pDev, argument
2035 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2043 pClientMem = FindClientMem( pDev, clientID );
2098 sGobiUSBNet * pDev, argument
2109 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2117 pClientMem = FindClientMem( pDev, clientID );
2194 sGobiUSBNet * pDev, argument
2205 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2213 pClientMem = FindClientMem( pDev, clientID );
2261 sGobiUSBNet * pDev, argument
2270 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2278 pClientMem = FindClientMem( pDev, clientID );
2315 spin_unlock( &pDev->mQMIDev.mClientMemLock );
2317 pDelNotifyList->mpNotifyFunct( pDev,
2322 spin_lock( &pDev->mQMIDev.mClientMemLock );
2356 sGobiUSBNet * pDev, argument
2365 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2373 pClientMem = FindClientMem( pDev, clientID );
2418 sGobiUSBNet * pDev, argument
2427 if (spin_is_locked( &pDev->mQMIDev.mClientMemLock ) == 0)
2435 pClientMem = FindClientMem( pDev, clientID );
2634 sGobiUSBNet * pDev = container_of( pQMIDev, local
2638 if (pDev->mbMdm9x07)
2640 atomic_inc(&pDev->refcount);
2641 if (!pDev->mbQMIReady) {
2642 if (wait_for_completion_interruptible_timeout(&pDev->mQMIReadyCompletion, 15*HZ) <= 0) {
2643 if (atomic_dec_and_test(&pDev->refcount)) {
2644 kfree( pDev );
2649 atomic_dec(&pDev->refcount);
2652 if (IsDeviceValid( pDev ) == false)
2668 pFilpData->mpDev = pDev;
3099 static int QMICTLSyncProc(sGobiUSBNet *pDev) argument
3109 if (IsDeviceValid( pDev ) == false)
3122 transactionID = QMIXactionIDGet(pDev);
3134 result = WriteSync( pDev,
3146 result = ReadSync( pDev,
3170 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3173 while (PopFromReadMemList( pDev, QMICTL, 0, &pReadBuffer, &readBufferSize) == true) {
3178 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3186 sGobiUSBNet * pDev = (sGobiUSBNet *)data; local
3192 if (QMIReady( pDev, 30000 ) == false)
3200 result = QMICTLSyncProc(pDev);
3212 if (pDev->qmap_mode) {
3214 result = QMIWDASetDataFormat (pDev, pDev->qmap_mode, &pDev->qmap_size);
3219 pDev->mpNetDev->rx_urb_size = pDev->qmap_size;
3224 result = SetupQMIWDSCallback( pDev );
3231 result = QMIDMSGetMEID( pDev );
3239 pDev->mbQMIReady = true;
3240 complete_all(&pDev->mQMIReadyCompletion);
3241 pDev->mbQMISyncIng = false;
3242 if (atomic_dec_and_test(&pDev->refcount)) {
3243 kfree( pDev );
3262 int RegisterQMIDevice( sGobiUSBNet * pDev ) argument
3269 if (pDev->mQMIDev.mbCdevIsInitialized == true)
3276 pDev->mbQMIValid = true;
3277 pDev->mbDeregisterQMIDevice = false;
3281 result = GetClientID( pDev, QMICTL );
3284 pDev->mbQMIValid = false;
3287 atomic_set( &pDev->mQMIDev.mQMICTLTransactionID, 1 );
3290 result = StartRead( pDev );
3293 pDev->mbQMIValid = false;
3297 if (pDev->mbMdm9x07)
3299 usb_control_msg( pDev->mpNetDev->udev,
3300 usb_sndctrlpipe( pDev->mpNetDev->udev, 0 ),
3305 pDev->mpIntf->cur_altsetting->desc.bInterfaceNumber,
3312 if (pDev->mbMdm9x07)
3315 atomic_inc(&pDev->refcount);
3316 init_completion(&pDev->mQMIReadyCompletion);
3317 pDev->mbQMIReady = false;
3318 pDev->mbQMISyncIng = true;
3319 …qmi_sync_task = kthread_run(qmi_sync_thread, (void *)pDev, "qmi_sync/%d", pDev->mpNetDev->udev->de…
3321 pDev->mbQMISyncIng = false;
3322 atomic_dec(&pDev->refcount);
3331 if (QMIReady( pDev, 30000 ) == false)
3339 result = QMICTLSyncProc(pDev);
3352 result = QMIWDASetDataFormat (pDev, pDev->qmap_mode, NULL);
3354 result = QMIWDASetDataFormat (pDev, 0, NULL);
3362 result = SetupQMIWDSCallback( pDev );
3369 result = QMIDMSGetMEID( pDev );
3384 cdev_init( &pDev->mQMIDev.mCdev, &UserspaceQMIFops );
3385 pDev->mQMIDev.mCdev.owner = THIS_MODULE;
3386 pDev->mQMIDev.mCdev.ops = &UserspaceQMIFops;
3387 pDev->mQMIDev.mbCdevIsInitialized = true;
3389 result = cdev_add( &pDev->mQMIDev.mCdev, devno, 1 );
3397 if (!!(pDevName = strstr( pDev->mpNetDev->net->name, "eth" ))) {
3399 } else if (!!(pDevName = strstr( pDev->mpNetDev->net->name, "usb" ))) {
3402 } else if (!!(pDevName = strstr( pDev->mpNetDev->net->name, "ppp" ))) {
3404 } else if (!!(pDevName = strstr( pDev->mpNetDev->net->name, "lte" ))) {
3408 DBG( "Bad net name: %s\n", pDev->mpNetDev->net->name );
3425 device_create( pDev->mQMIDev.mpDevClass,
3426 &pDev->mpIntf->dev,
3432 device_create( pDev->mQMIDev.mpDevClass,
3433 &pDev->mpIntf->dev,
3439 pDev->mQMIDev.mDevNum = devno;
3460 void DeregisterQMIDevice( sGobiUSBNet * pDev ) argument
3475 if (IsDeviceValid( pDev ) == false)
3481 pDev->mbDeregisterQMIDevice = true;
3484 if (pDev->mbQMISyncIng == false)
3489 if (pDev->mbQMISyncIng) {
3494 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3495 while (pDev->mQMIDev.mpClientMemList != NULL)
3497 u16 mClientID = pDev->mQMIDev.mpClientMemList->mClientID;
3498 if (waitqueue_active(&pDev->mQMIDev.mpClientMemList->mWaitQueue)) {
3500 wake_up_interruptible_sync( &pDev->mQMIDev.mpClientMemList->mWaitQueue );
3501 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3503 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3507 DBG( "release 0x%04X\n", pDev->mQMIDev.mpClientMemList->mClientID );
3509 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3510 ReleaseClientID( pDev, mClientID );
3513 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3515 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3518 KillRead( pDev );
3520 pDev->mbQMIValid = false;
3522 if (pDev->mQMIDev.mbCdevIsInitialized == false)
3531 list_for_each( pInodeList, &pDev->mQMIDev.mCdev.list )
3579 if (pDev->mpNetDev->udev->state) {
3581 result = usb_control_msg( pDev->mpNetDev->udev,
3582 usb_sndctrlpipe( pDev->mpNetDev->udev, 0 ),
3587 pDev->mpIntf->cur_altsetting->desc.bInterfaceNumber,
3598 if (IS_ERR( pDev->mQMIDev.mpDevClass ) == false)
3600 device_destroy( pDev->mQMIDev.mpDevClass,
3601 pDev->mQMIDev.mDevNum );
3610 int ref = atomic_read( &pDev->mQMIDev.mCdev.kobj.kref.refcount );
3612 int ref = kref_read( &pDev->mQMIDev.mCdev.kobj.kref );
3627 cdev_del( &pDev->mQMIDev.mCdev );
3629 unregister_chrdev_region( pDev->mQMIDev.mDevNum, 1 );
3654 sGobiUSBNet * pDev, argument
3667 if (IsDeviceValid( pDev ) == false)
3692 transactionID = QMIXactionIDGet( pDev );
3694 result = ReadAsync( pDev, QMICTL, transactionID, UpSem, readSem );
3712 result = WriteSync( pDev,
3732 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3735 if (PopFromReadMemList( pDev,
3744 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3754 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3761 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3764 NotifyAndPopNotifyList( pDev, QMICTL, transactionID );
3767 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3770 if (pDev->mbDeregisterQMIDevice)
3808 sGobiUSBNet * pDev, argument
3819 struct net_device_stats * pStats = &(pDev->mpNetDev->stats);
3821 struct net_device_stats * pStats = &(pDev->mpNetDev->net->stats);
3837 if (IsDeviceValid( pDev ) == false)
3844 spin_lock_irqsave( &pDev->mQMIDev.mClientMemLock, flags );
3846 bRet = PopFromReadMemList( pDev,
3853 spin_unlock_irqrestore( &pDev->mQMIDev.mClientMemLock, flags );
3862 bLinkState = ! GobiTestDownReason( pDev, NO_NDIS_CONNECTION );
3929 GobiSetDownReason( pDev, NO_NDIS_CONNECTION );
3930 GobiClearDownReason( pDev, NO_NDIS_CONNECTION );
3936 if (GobiTestDownReason( pDev, NO_NDIS_CONNECTION )) {
3938 GobiClearDownReason( pDev, NO_NDIS_CONNECTION );
3943 if (!GobiTestDownReason( pDev, NO_NDIS_CONNECTION )) {
3945 GobiSetDownReason( pDev, NO_NDIS_CONNECTION );
3954 result = ReadAsync( pDev,
3982 static int SetupQMIWDSCallback( sGobiUSBNet * pDev ) argument
3989 if (IsDeviceValid( pDev ) == false)
3995 result = GetClientID( pDev, QMIWDS );
4003 if (pDev->mbMdm9x07)
4025 result = WriteSync( pDev,
4036 result = ReadSync( pDev,
4067 result = WriteSync( pDev,
4095 result = WriteSync( pDev,
4107 result = ReadAsync( pDev,
4120 result = usb_control_msg( pDev->mpNetDev->udev,
4121 usb_sndctrlpipe( pDev->mpNetDev->udev, 0 ),
4126 pDev->mpIntf->cur_altsetting->desc.bInterfaceNumber,
4154 static int QMIDMSGetMEID( sGobiUSBNet * pDev ) argument
4163 if (IsDeviceValid( pDev ) == false)
4169 result = GetClientID( pDev, QMIDMS );
4193 result = WriteSync( pDev,
4205 result = ReadSync( pDev,
4217 &pDev->mMEID[0],
4227 memset( &pDev->mMEID[0], '0', 14 );
4230 ReleaseClientID( pDev, DMSClientID );
4251 static int QMIWDASetDataFormat( sGobiUSBNet * pDev, int qmap_mode, int *rx_urb_size ) argument
4262 if (IsDeviceValid( pDev ) == false)
4268 result = GetClientID( pDev, QMIWDA );
4284 writeBufferSize, pDev->mbRawIPMode,
4285 qmap_mode ? pDev->qmap_version : 0, (31*1024),
4294 result = WriteSync( pDev,
4306 result = ReadSync( pDev,
4319 … readBufferSize, pDev->mbRawIPMode, &qmap_version, &rx_size, &tx_size, &pDev->qmap_settings);
4325 struct ul_agg_ctx *ctx = &pDev->agg_ctx;
4327 if (le32_to_cpu(pDev->qmap_settings.ul_data_aggregation_max_datagrams) > 1) {
4328 … ctx->ul_data_aggregation_max_size = le32_to_cpu(pDev->qmap_settings.ul_data_aggregation_max_size);
4329 …ctx->ul_data_aggregation_max_datagrams = le32_to_cpu(pDev->qmap_settings.ul_data_aggregation_max_d…
4330 ctx->dl_minimum_padding = le32_to_cpu(pDev->qmap_settings.dl_minimum_padding);
4345 … readBufferSize, pDev->mbRawIPMode, &qmap_enabled, &rx_size, &tx_size, NULL);
4355 ReleaseClientID( pDev, WDAClientID );
4361 int QuecQMIWDASetDataFormat( sGobiUSBNet * pDev, int qmap_mode, int *rx_urb_size ) { argument
4362 return QMIWDASetDataFormat(pDev, qmap_mode, rx_urb_size);