[Galaxy S III I9305 (4G LTE + 2GB RAM) Q&A, Help & ] erosco:
I think the issue is with the ConnectivityService's requestNetwork. It seems to always cause a 'new' network allocation even though the LTE network is up and running. This causes the netd route commands etc to fail as the 'device is busy'.

11-28 16:00:55.537 D/ConnectivityService(2394): registerNetworkAgent NetworkAgentInfo{ ni{[type: MOBILE[LTE], state: CONNECTED/CONNECTED, reason: connected, extra: mms, failover: false, available: true, roaming: false, metered: true]} network{101} nethandle{433808132830} lp{{InterfaceName: rmnet_usb0 LinkAddresses: [10.232.126.57/32,] Routes: [0.0.0.0/0 -> 10.232.126.58 rmnet_usb0,] DnsAddresses: [198.142.0.51,211.29.132.12,] Domains: null MTU: 1500 TcpBufferSizes: 524288,1048576,2097152,262144,524288,1048576}} nc{[ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN LinkUpBandwidth>=51200Kbps LinkDnBandwidth>=102400Kbps Specifier: <1>]} Score{10} everValidated{false} lastValidated{false} created{false} lingering{false} explicitlySelected{false} acceptUnvalidated{false} everCaptivePortalDetected{false} lastCaptivePortalDetected{false} }

11-28 16:00:55.537 D/ConnectivityService(2394): NetworkAgentInfo [MOBILE (LTE) - 101] EVENT_NETWORK_INFO_CHANGED, going from null to CONNECTED

11-28 16:00:55.539 D/ConnectivityService(2394): Adding iface rmnet_usb0 to network 101

11-28 16:00:55.539 E/Netd (2092): interface rmnet_usb0 already assigned to netId 100

11-28 16:00:55.541 E/ConnectivityService(2394): Exception adding interface: java.lang.IllegalStateException: command '43 network interface add 101 rmnet_usb0' failed with '400 43 addInterfaceToNetwork() failed (Device or resource busy)'

11-28 16:00:55.543 E/Netd (2092): interface rmnet_usb0 assigned to netId 100, not 101

11-28 16:00:55.545 E/ConnectivityService(2394): Exception in addRoute for gateway: java.lang.IllegalStateException: command '45 network route add 101 rmnet_usb0 0.0.0.0/0 10.232.126.58' failed with '400 45 addRoute() failed (No such file or directory)'

11-28 16:00:55.545 D/ConnectivityService(2394): Setting DNS servers for network 101 to [/198.142.0.51, /211.29.132.12]

11-28 16:00:55.556 W/ConnectivityExtension(2394): ConnectivityExt jar file not present

11-28 16:00:55.566 W/ConnectivityExtension(2394): ConnectivityExt jar file not present

11-28 16:00:55.571 D/NetworkNotificationManager(2394): clearNotification id=101

11-28 16:00:55.571 D/ConnectivityService(2394): NetworkAgentInfo [MOBILE (LTE) - 101] validation passed

Later on (when I enable WiFi) - the LTE network connection (first/active one: id 100) is released which makes the next (later) requestNetwork succeed without exceptions.

I can also see that earlier (non-MMS) network requests seemed to reuse connection 100 over and over..

11-28 16:00:44.173 D/ConnectivityService(2394): requestNetwork for uid/pid:1000/2394 NetworkRequest [ REQUEST id=10, legacyType=3, [ Transports: CELLULAR Capabilities: SUPL&NOT_RESTRICTED&TRUSTED&NOT_VPN] ]

The only difference I can see (apart from MMS and not SUPL) is that the legacyType=3 is missing.

11-28 16:00:55.412 D/ConnectivityService(2394): requestNetwork for uid/pid:1001/2851 NetworkRequest [ REQUEST id=11, [ Transports: CELLULAR Capabilities: MMS&NOT_RESTRICTED&TRUSTED&NOT_VPN Specifier: <1>] ]

I am wondering if there is some way to force the MMS networkRequest to have a legacyType of 3 and/or reuse connection 100 like the supl ones.

TCPDUMP on all interfaces shows no (MMS) packets until the WIFI one succeeds. Again.. despite WiFi being enabled.. the MMS packets go over the LTE connection.. I now understand why this is.. it's because turning on WiFi causes all the LTE internet connections to be dropped; which allows it to be activated (net 100) for MMS.

Cheers