I'm also trying to make a network device driver using NetworkingDriverKit. It seems to success a making queues, but I couldn't found any packet transmissions by my driver.
Logs of my driver in initialization as following.
default 10:29:43.107556+0900 kernel Found class: nictest
default 10:29:43.109040+0900 kernel init method is called
default 10:29:43.109380+0900 kernel Hello World at start
default 10:29:43.114891+0900 kernel net dext: IOUserNetworkPacketBufferPool::Create(this, "pool", packet_count, buffer_count, buffer_size, &pool);
default 10:29:43.115073+0900 kernel net dext: IOUserNetworkTxSubmissionQueue::Create(pool, this, packet_count, 0, dispatch_queue, &tx_sub_queue);
default 10:29:43.115077+0900 kernel net dext: sub_queue->CopyDataQueue(&ivars->tx_sub_dsource)
default 10:29:43.115098+0900 kernel net dext: CreateActionTxSubAvailable(sizeof (void*), &ivars->tx_sub_action);
default 10:29:43.115107+0900 kernel net dext: ivars->tx_sub_dsource->SetDataAvailableHandler(ivars->tx_sub_action);
default 10:29:43.115112+0900 kernel net dext: ivars->tx_sub_dsource->SetEnable(true);
default 10:29:43.115119+0900 kernel net dext: tx_sub_queue->SetEnable(true)
default 10:29:43.115226+0900 kernel net dext: IOUserNetworkTxCompletionQueue::Create(pool, this, packet_count, 0, dispatch_queue, &com_queue);
default 10:29:43.115230+0900 kernel net dext: tx_com_queue->CopyDataQueue(&ivars->tx_com_dsource);
default 10:29:43.115247+0900 kernel net dext: CreateActionTxComDataServiced(sizeof (void*), &ivars->tx_com_action);
default 10:29:43.115251+0900 kernel net dext: ivars->tx_com_dsource->SetDataAvailableHandler(ivars->tx_com_action);
default 10:29:43.115253+0900 kernel net dext: ivars->tx_com_dsource->SetEnable(true);
default 10:29:43.115257+0900 kernel net dext: tx_com_queue->SetEnable(true);
default 10:29:43.115381+0900 kernel net dext: IOUserNetworkRxSubmissionQueue::Create(pool, this, packet_count, 0, dispatch_queue, &rx_sub_queue);
default 10:29:43.115385+0900 kernel net dext: rx_sub_queue->CopyDataQueue(&ivars->rx_sub_dsource);
default 10:29:43.115401+0900 kernel net dext: CreateActionRxSubAvailable(sizeof (void*), &ivars->rx_sub_action);
default 10:29:43.115406+0900 kernel net dext: ivars->rx_sub_dsource->SetDataAvailableHandler(ivars->rx_sub_action);
default 10:29:43.115408+0900 kernel net dext: ivars->rx_sub_dsource->SetEnable(true);
default 10:29:43.115416+0900 kernel net dext: rx_sub_queue->SetEnable(true);
default 10:29:43.115709+0900 kernel net dext: IOUserNetworkRxCompletionQueue::Create(pool, this, packet_count, 0, dispatch_queue, &rx_com_queue);
default 10:29:43.115712+0900 kernel net dext: com_queue->CopyDataQueue(&ivars->rx_sub_dsource);
default 10:29:43.115729+0900 kernel net dext: CreateActionRxComDataServiced(sizeof (void*), &ivars->rx_com_action);
default 10:29:43.115739+0900 kernel net dext: ivars->rx_sub_dsource->SetDataServicedHandler(ivars->rx_com_action);
default 10:29:43.115741+0900 kernel net dext: ivars->rx_sub_dsource->SetEnable(true);
default 10:29:43.115746+0900 kernel net dext: rx_com_queue->SetEnable(true);
default 10:29:43.115776+0900 kernel net dext: const IOUserNetworkMediaType types[] = { kIOUserNetworkMediaEthernetAuto, kIOUserNetworkMediaEthernetNone, kIOUserNetworkMediaEthernet1000BaseT | kIOUserNetworkMediaOptionFullDuplex };
default 10:29:43.115778+0900 kernel net dext: ret = ReportAvailableMediaTypes(types, 3);
default 10:29:43.115806+0900 kernel net dext: ReportLinkStatus(kIOUserNetworkLinkStatusInactive, kIOUserNetworkMediaEthernetNone);
default 10:29:43.115832+0900 kernel net dext: RegisterEthernetInterface(macAddress, pool, ivars->queues, 4);
default 10:29:43.142245+0900 kernel net dext: GetMaxTransferUnit methos is called
default 10:29:43.143402+0900 kernel net dext: SetInterfaceEnable method is called [isEnable == true]
default 10:29:43.143810+0900 kernel net dext: SetInterfaceEnable method is called [isEnable == false]
I'm not sure why this driver is disabled after enabled. Do you have any solution for it?
Thank you.