qdpc-host: use Comcerto PFE fastpath.
- If CONFIG_ARCH_COMCERTO=y, allocate SKBs on NCNB memory and pass
received packets to comcerto_wifi_rx_fastpath().
- Change default interface name pattern from host%d to wlan%d. This
allows fastforward.config to work without modifications.
- Change NAPI budget from 10 to 64.
These changes enable Optimus Prime to forward packets at over 1Gbps.
Change-Id: I160ea5801721e7bbe5d061640019b09a344824d0
diff --git a/drivers/net/wireless/quantenna/pcie2/host/common/topaz_vnet.c b/drivers/net/wireless/quantenna/pcie2/host/common/topaz_vnet.c
index 080ea6e..d04ec67 100644
--- a/drivers/net/wireless/quantenna/pcie2/host/common/topaz_vnet.c
+++ b/drivers/net/wireless/quantenna/pcie2/host/common/topaz_vnet.c
@@ -154,7 +154,7 @@
#endif
struct vmac_cfg vmaccfg = {
- QDPC_RX_QUEUE_SIZE, QDPC_TX_QUEUE_SIZE, "host%d", NULL
+ QDPC_RX_QUEUE_SIZE, QDPC_TX_QUEUE_SIZE, "wlan%d", NULL
};
static char *ethaddr = NULL;
@@ -762,11 +762,16 @@
#endif
dump_rx_pkt(vmp, (char *)skb->data, (int)skb->len);
- skb->protocol = eth_type_trans(skb, ndev);
processed++;
-
- netif_receive_skb(skb);
+#ifdef CONFIG_ARCH_COMCERTO
+ extern int comcerto_wifi_rx_fastpath(struct sk_buff *skb);
+ if (comcerto_wifi_rx_fastpath(skb))
+#endif
+ {
+ skb->protocol = eth_type_trans(skb, ndev);
+ netif_receive_skb(skb);
+ }
ndev->stats.rx_packets++;
ndev->stats.rx_bytes += VMAC_GET_LEN(descw1);
@@ -825,7 +830,11 @@
}
spin_unlock(&vmp->rx_skb_freelist_lock);
#else
+#ifdef CONFIG_ARCH_COMCERTO
+ if (!(skb = __dev_alloc_skb(SKB_BUF_SIZE, GFP_ATOMIC | GFP_DMA_NCNB))) {
+#else
if (!(skb = dev_alloc_skb(SKB_BUF_SIZE))) {
+#endif
vmp->rx_skb_alloc_failures++;
vmp->rx_skb[rx_bd_index] = NULL;/* prevent old packet from passing the packet up */
return -1;
@@ -1298,7 +1307,7 @@
goto vnet_init_err_2;
/* Initialize NAPI */
- netif_napi_add(ndev, &vmp->napi, vmac_rx_poll, 10);
+ netif_napi_add(ndev, &vmp->napi, vmac_rx_poll, 64);
/* Register device */
if ((err = register_netdev(ndev)) != 0) {