- 28 Jun, 2017 1 commit
-
-
Vikram Narayanan authored
Also use num_online_cpus that faithfully represents the number of online cpus. Add a new pool for skb container Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 09 Jun, 2017 2 commits
-
-
Signed-off-by:
Abhiram Balasubramanian <abhiram@cs.utah.edu>
-
Needed to differentiate between lcd and klcd in `ps` output (use case - mangle thread priority/cpu affinity) Signed-off-by:
Abhiram Balasubramanian <abhiram@cs.utah.edu>
-
- 06 Jun, 2017 1 commit
-
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 28 May, 2017 1 commit
-
-
Vikram Narayanan authored
Instead of sharing the same async channel with dispatch loop, create a separate channel for xmit. This channel is exclusively used only for xmit Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 26 May, 2017 4 commits
-
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
For now, grant the sync endpoint and never revert it. Set a flag for non LCD context and handle it inside the original xmit function. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Make our device use private pool for skb->data by setting the feature flag. Initialize shared data pool and pass it on to the other side during probe. Refactor caller/callee functions to transfer shared data skb's. Marshal the necessary skb members inside the shared data region. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 18 May, 2017 4 commits
-
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Rx packets > 256 requires page fragments. (256 size limit is imposed by the IXGBE driver according to their internal buffer size). Add skb_rx_fragto add a page fragment to the skb. This is not an optimized solution. Just add this to make the Rxpath complete. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
In the Rx path, page fragments are mapped inside the isolated domain and passed onto the kernel for consumption by upper layers. Let's save the lcd_struct so that we can easily do a lookup. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
When memory is volunteered, it needs to be unvolunteered when the packet is freed. For that we need to access the cspace of the task struct which volunteered the memory. To make sure whether or not klcd volunteered it, let's save its current pointer. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 15 May, 2017 2 commits
-
-
Vikram Narayanan authored
skb->data needs to be shared across LCD and KLCD. To facilitate this, create a shared area and an allocator on top and use this for allocating skb->data for sk_buffs. Use NETIF flags to enable priv pool allocation. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Based on per thread userspace gary's allocator Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 04 May, 2017 7 commits
-
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Use the native driver's frequency. This would indirectly facilicate frequent polling, as the LCD's main loop calls the poll function only when it gets an IPC message (ipc_poll_recv is a blocking call) Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Add support for the following APIs * netif_napi_add * netif_napi_del * napi_consume_skb * netif_wake_subqueue * netif_receive_skb * napi_gro_receive * __napi_alloc_skb * eth_type_trans Enable interrupt for only one tx/rx queue and enable a sort of napi polling at LCD end. In contrast to napi polling, this polling never switches to interrupt mode. Polling is shutdown when the device is removed Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
skbs are used extensively in tx/rx path. Use a simple hashtable instead of polluting the kernel sources with sk_buff_containers Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Introduce hashtable for storing containers. This needs to be unified and genaralized for all datastructures. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Handle the case if lcd has not started at all. In that case, current->lcd would be null. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Replace native api with LCD variant Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 03 May, 2017 1 commit
-
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 25 Apr, 2017 7 commits
-
-
Vikram Narayanan authored
Add stub functions for timer and dev_trans_start Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
dma_map_single uses the default helpers such as virt_to_page which is not valid for pages mapped in the rammap region. As every page is mapped during xmit, this page needs to be programmed in the iommu before transmission. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Using iommu apis, assign/deassign the pci device during probe and remove inside the LCD. Also map appropriate number of pages during xmit. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
The helper macros phys_to_page doesn't work inside LCD. Fix that by changing those calls to appropriate LCD helpers. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Introduce four lcd_syscalls for programming iommu for a pci device from LCD. PCI devices can now be assigned to an LCD. During probe, one can assign a device to a particular LCD. During device assignment, all pages inside the heap and rammap regions are mapped in the iommu. During data plane operation, one can map/unmap a page by means of lcd_syscall's. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
During ept walk, not always do we need to know about missing mappings. Add verbose flag to print a warning for the missig mapping. This is just to prevent printk flood during iommu map. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 24 Apr, 2017 4 commits
-
-
Vikram Narayanan authored
netdev->state is updated by many kernel functions. Synchronize the states across RPCs to have a sane state inside the LCD. Also call the local liblcd functions for dev_addr helpers to keep the LCD copy of the datastructure sane. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
mdio45_probe calls the read callback multiple times. So handle it inside the LCD. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Timers can't run inside LCD as there is no support. So, start a timer in KLCD (but with a lower frequency compared to the original one) and trigger a handler inside LCD when the timer expires. In case of ixgbe driver, a service_event is triggered by the timer. Also add support for asynchronous register dump via sysfs module params. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Add the following functions * __hw_addr_sync_dev * __hw_addr_unsync_dev * pci_disable_msix * pci_enable_msix_range * netif_tx_wake_all_queues pci helpers are required for manipulating msi interrupts. __hw_addr helpers provide functionality for adding/removing hw address to the netdev address lists. Also add print and dump stack in all the stub functions to know where this function originates from. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 20 Apr, 2017 2 commits
-
-
Vikram Narayanan authored
struct net_device instance of the driver is heavily modified by the kernel. In order to keep things in sync, we need some internal helpers so as to avoid volunteering memory for various structures and marshalling lists.These files pull in a minimal set of helper functions from the kernel to keep things intact. Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 06 Apr, 2017 3 commits
-
-
Vikram Narayanan authored
Enable the following function pointers: * ndo_open * ndo_stop * ndo_start_xmit * ndo_set_rx_mode * ndo_validate_addr * ndo_set_mac_address * ndo_change_mtu * ndo_tx_timeout * ndo_set_tx_maxrate * ndo_get_stats64 Add missing dev_addr_add function as well. Remove VLAN features from ixgbe (to be explored in the future) Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
Vikram Narayanan authored
In the native kernel, usleep_range leans on the hrtimer interface. As we don't have any timer support inside LCDs, make this api perform an udelay instead. Both usleep_range and msleep needs to be fixed in the future Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-
- 04 Apr, 2017 1 commit
-
-
Vikram Narayanan authored
Pass dma_mask and other ref pointer as well Signed-off-by:
Vikram Narayanan <vikram186@gmail.com>
-