|
@@ -20,6 +20,179 @@
|
|
|
#include "vxge-traffic.h"
|
|
|
#include "vxge-config.h"
|
|
|
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_fifo_create(
|
|
|
+ struct __vxge_hw_vpath_handle *vpath_handle,
|
|
|
+ struct vxge_hw_fifo_attr *attr);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_fifo_abort(
|
|
|
+ struct __vxge_hw_fifo *fifoh);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_fifo_reset(
|
|
|
+ struct __vxge_hw_fifo *ringh);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_fifo_delete(
|
|
|
+ struct __vxge_hw_vpath_handle *vpath_handle);
|
|
|
+
|
|
|
+static struct __vxge_hw_blockpool_entry *
|
|
|
+__vxge_hw_blockpool_block_allocate(struct __vxge_hw_device *hldev,
|
|
|
+ u32 size);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_blockpool_block_free(struct __vxge_hw_device *hldev,
|
|
|
+ struct __vxge_hw_blockpool_entry *entry);
|
|
|
+
|
|
|
+static void vxge_hw_blockpool_block_add(struct __vxge_hw_device *devh,
|
|
|
+ void *block_addr,
|
|
|
+ u32 length,
|
|
|
+ struct pci_dev *dma_h,
|
|
|
+ struct pci_dev *acc_handle);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_blockpool_create(struct __vxge_hw_device *hldev,
|
|
|
+ struct __vxge_hw_blockpool *blockpool,
|
|
|
+ u32 pool_size,
|
|
|
+ u32 pool_max);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_blockpool_destroy(struct __vxge_hw_blockpool *blockpool);
|
|
|
+
|
|
|
+static void *
|
|
|
+__vxge_hw_blockpool_malloc(struct __vxge_hw_device *hldev,
|
|
|
+ u32 size,
|
|
|
+ struct vxge_hw_mempool_dma *dma_object);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_blockpool_free(struct __vxge_hw_device *hldev,
|
|
|
+ void *memblock,
|
|
|
+ u32 size,
|
|
|
+ struct vxge_hw_mempool_dma *dma_object);
|
|
|
+
|
|
|
+
|
|
|
+static struct __vxge_hw_channel*
|
|
|
+__vxge_hw_channel_allocate(struct __vxge_hw_vpath_handle *vph,
|
|
|
+ enum __vxge_hw_channel_type type, u32 length,
|
|
|
+ u32 per_dtr_space, void *userdata);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_channel_free(
|
|
|
+ struct __vxge_hw_channel *channel);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_channel_initialize(
|
|
|
+ struct __vxge_hw_channel *channel);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_channel_reset(
|
|
|
+ struct __vxge_hw_channel *channel);
|
|
|
+
|
|
|
+static enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_vpath_handle *vp);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_device_fifo_config_check(struct vxge_hw_fifo_config *fifo_config);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_device_config_check(struct vxge_hw_device_config *new_config);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_device_id_get(struct __vxge_hw_device *hldev);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_device_host_info_get(struct __vxge_hw_device *hldev);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_card_info_get(
|
|
|
+ u32 vp_id,
|
|
|
+ struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
|
+ struct vxge_hw_device_hw_info *hw_info);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_device_initialize(struct __vxge_hw_device *hldev);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_device_reg_addr_get(struct __vxge_hw_device *hldev);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_device_register_poll(
|
|
|
+ void __iomem *reg,
|
|
|
+ u64 mask, u32 max_millis);
|
|
|
+
|
|
|
+static inline enum vxge_hw_status
|
|
|
+__vxge_hw_pio_mem_write64(u64 val64, void __iomem *addr,
|
|
|
+ u64 mask, u32 max_millis)
|
|
|
+{
|
|
|
+ __vxge_hw_pio_mem_write32_lower((u32)vxge_bVALn(val64, 32, 32), addr);
|
|
|
+ wmb();
|
|
|
+
|
|
|
+ __vxge_hw_pio_mem_write32_upper((u32)vxge_bVALn(val64, 0, 32), addr);
|
|
|
+ wmb();
|
|
|
+
|
|
|
+ return __vxge_hw_device_register_poll(addr, mask, max_millis);
|
|
|
+}
|
|
|
+
|
|
|
+static struct vxge_hw_mempool*
|
|
|
+__vxge_hw_mempool_create(struct __vxge_hw_device *devh, u32 memblock_size,
|
|
|
+ u32 item_size, u32 private_size, u32 items_initial,
|
|
|
+ u32 items_max, struct vxge_hw_mempool_cbs *mp_callback,
|
|
|
+ void *userdata);
|
|
|
+static void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_stats_get(struct __vxge_hw_virtualpath *vpath,
|
|
|
+ struct vxge_hw_vpath_stats_hw_info *hw_stats);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+vxge_hw_vpath_stats_enable(struct __vxge_hw_vpath_handle *vpath_handle);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg);
|
|
|
+
|
|
|
+static u64
|
|
|
+__vxge_hw_vpath_pci_func_mode_get(u32 vp_id,
|
|
|
+ struct vxge_hw_vpath_reg __iomem *vpath_reg);
|
|
|
+
|
|
|
+static u32
|
|
|
+__vxge_hw_vpath_func_id_get(u32 vp_id, struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_addr_get(u32 vp_id, struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
|
+ u8 (macaddr)[ETH_ALEN], u8 (macaddr_mask)[ETH_ALEN]);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath);
|
|
|
+
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_sw_reset(struct __vxge_hw_device *devh, u32 vp_id);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_fw_ver_get(u32 vp_id, struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
|
+ struct vxge_hw_device_hw_info *hw_info);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_mac_configure(struct __vxge_hw_device *devh, u32 vp_id);
|
|
|
+
|
|
|
+static void
|
|
|
+__vxge_hw_vp_terminate(struct __vxge_hw_device *devh, u32 vp_id);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_stats_access(struct __vxge_hw_virtualpath *vpath,
|
|
|
+ u32 operation, u32 offset, u64 *stat);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_xmac_tx_stats_get(struct __vxge_hw_virtualpath *vpath,
|
|
|
+ struct vxge_hw_xmac_vpath_tx_stats *vpath_tx_stats);
|
|
|
+
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_xmac_rx_stats_get(struct __vxge_hw_virtualpath *vpath,
|
|
|
+ struct vxge_hw_xmac_vpath_rx_stats *vpath_rx_stats);
|
|
|
+
|
|
|
/*
|
|
|
* __vxge_hw_channel_allocate - Allocate memory for channel
|
|
|
* This function allocates required memory for the channel and various arrays
|
|
@@ -190,7 +363,7 @@ __vxge_hw_device_pci_e_init(struct __vxge_hw_device *hldev)
|
|
|
* Will poll certain register for specified amount of time.
|
|
|
* Will poll until masked bit is not cleared.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -221,7 +394,7 @@ __vxge_hw_device_register_poll(void __iomem *reg, u64 mask, u32 max_millis)
|
|
|
* in progress
|
|
|
* This routine checks the vpath reset in progress register is turned zero
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
|
|
|
{
|
|
|
enum vxge_hw_status status;
|
|
@@ -236,7 +409,7 @@ __vxge_hw_device_vpath_reset_in_prog_check(u64 __iomem *vpath_rst_in_prog)
|
|
|
* This routine sets the swapper and reads the toc pointer and returns the
|
|
|
* memory mapped address of the toc
|
|
|
*/
|
|
|
-struct vxge_hw_toc_reg __iomem *
|
|
|
+static struct vxge_hw_toc_reg __iomem *
|
|
|
__vxge_hw_device_toc_get(void __iomem *bar0)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -779,7 +952,7 @@ exit:
|
|
|
* vxge_hw_device_xmac_aggr_stats_get - Get the Statistics on aggregate port
|
|
|
* Get the Statistics on aggregate port
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
vxge_hw_device_xmac_aggr_stats_get(struct __vxge_hw_device *hldev, u32 port,
|
|
|
struct vxge_hw_xmac_aggr_stats *aggr_stats)
|
|
|
{
|
|
@@ -814,7 +987,7 @@ exit:
|
|
|
* vxge_hw_device_xmac_port_stats_get - Get the Statistics on a port
|
|
|
* Get the Statistics on port
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
vxge_hw_device_xmac_port_stats_get(struct __vxge_hw_device *hldev, u32 port,
|
|
|
struct vxge_hw_xmac_port_stats *port_stats)
|
|
|
{
|
|
@@ -952,20 +1125,6 @@ u32 vxge_hw_device_trace_level_get(struct __vxge_hw_device *hldev)
|
|
|
return 0;
|
|
|
#endif
|
|
|
}
|
|
|
-/*
|
|
|
- * vxge_hw_device_debug_mask_get - Get the debug mask
|
|
|
- * This routine returns the current debug mask set
|
|
|
- */
|
|
|
-u32 vxge_hw_device_debug_mask_get(struct __vxge_hw_device *hldev)
|
|
|
-{
|
|
|
-#if defined(VXGE_DEBUG_TRACE_MASK) || defined(VXGE_DEBUG_ERR_MASK)
|
|
|
- if (hldev == NULL)
|
|
|
- return 0;
|
|
|
- return hldev->debug_module_mask;
|
|
|
-#else
|
|
|
- return 0;
|
|
|
-#endif
|
|
|
-}
|
|
|
|
|
|
/*
|
|
|
* vxge_hw_getpause_data -Pause frame frame generation and reception.
|
|
@@ -1090,7 +1249,7 @@ __vxge_hw_ring_block_next_pointer_set(u8 *block, dma_addr_t dma_next)
|
|
|
* first block
|
|
|
* Returns the dma address of the first RxD block
|
|
|
*/
|
|
|
-u64 __vxge_hw_ring_first_block_address_get(struct __vxge_hw_ring *ring)
|
|
|
+static u64 __vxge_hw_ring_first_block_address_get(struct __vxge_hw_ring *ring)
|
|
|
{
|
|
|
struct vxge_hw_mempool_dma *dma_object;
|
|
|
|
|
@@ -1252,7 +1411,7 @@ exit:
|
|
|
* This function creates Ring and initializes it.
|
|
|
*
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_ring_create(struct __vxge_hw_vpath_handle *vp,
|
|
|
struct vxge_hw_ring_attr *attr)
|
|
|
{
|
|
@@ -1363,7 +1522,7 @@ exit:
|
|
|
* __vxge_hw_ring_abort - Returns the RxD
|
|
|
* This function terminates the RxDs of ring
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_ring_abort(struct __vxge_hw_ring *ring)
|
|
|
+static enum vxge_hw_status __vxge_hw_ring_abort(struct __vxge_hw_ring *ring)
|
|
|
{
|
|
|
void *rxdh;
|
|
|
struct __vxge_hw_channel *channel;
|
|
@@ -1392,7 +1551,7 @@ enum vxge_hw_status __vxge_hw_ring_abort(struct __vxge_hw_ring *ring)
|
|
|
* __vxge_hw_ring_reset - Resets the ring
|
|
|
* This function resets the ring during vpath reset operation
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_ring_reset(struct __vxge_hw_ring *ring)
|
|
|
+static enum vxge_hw_status __vxge_hw_ring_reset(struct __vxge_hw_ring *ring)
|
|
|
{
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
|
struct __vxge_hw_channel *channel;
|
|
@@ -1419,7 +1578,7 @@ exit:
|
|
|
* __vxge_hw_ring_delete - Removes the ring
|
|
|
* This function freeup the memory pool and removes the ring
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_vpath_handle *vp)
|
|
|
+static enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_vpath_handle *vp)
|
|
|
{
|
|
|
struct __vxge_hw_ring *ring = vp->vpath->ringh;
|
|
|
|
|
@@ -1438,7 +1597,7 @@ enum vxge_hw_status __vxge_hw_ring_delete(struct __vxge_hw_vpath_handle *vp)
|
|
|
* __vxge_hw_mempool_grow
|
|
|
* Will resize mempool up to %num_allocate value.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_mempool_grow(struct vxge_hw_mempool *mempool, u32 num_allocate,
|
|
|
u32 *num_allocated)
|
|
|
{
|
|
@@ -1527,7 +1686,7 @@ exit:
|
|
|
* with size enough to hold %items_initial number of items. Memory is
|
|
|
* DMA-able but client must map/unmap before interoperating with the device.
|
|
|
*/
|
|
|
-struct vxge_hw_mempool*
|
|
|
+static struct vxge_hw_mempool*
|
|
|
__vxge_hw_mempool_create(
|
|
|
struct __vxge_hw_device *devh,
|
|
|
u32 memblock_size,
|
|
@@ -1644,7 +1803,7 @@ exit:
|
|
|
/*
|
|
|
* vxge_hw_mempool_destroy
|
|
|
*/
|
|
|
-void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool)
|
|
|
+static void __vxge_hw_mempool_destroy(struct vxge_hw_mempool *mempool)
|
|
|
{
|
|
|
u32 i, j;
|
|
|
struct __vxge_hw_device *devh = mempool->devh;
|
|
@@ -1700,7 +1859,7 @@ __vxge_hw_device_fifo_config_check(struct vxge_hw_fifo_config *fifo_config)
|
|
|
* __vxge_hw_device_vpath_config_check - Check vpath configuration.
|
|
|
* Check the vpath configuration
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_device_vpath_config_check(struct vxge_hw_vp_config *vp_config)
|
|
|
{
|
|
|
enum vxge_hw_status status;
|
|
@@ -1922,7 +2081,7 @@ vxge_hw_device_config_default_get(struct vxge_hw_device_config *device_config)
|
|
|
* _hw_legacy_swapper_set - Set the swapper bits for the legacy secion.
|
|
|
* Set the swapper bits appropriately for the lagacy section.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -1977,7 +2136,7 @@ __vxge_hw_legacy_swapper_set(struct vxge_hw_legacy_reg __iomem *legacy_reg)
|
|
|
* __vxge_hw_vpath_swapper_set - Set the swapper bits for the vpath.
|
|
|
* Set the swapper bits appropriately for the vpath.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
|
|
|
{
|
|
|
#ifndef __BIG_ENDIAN
|
|
@@ -1996,7 +2155,7 @@ __vxge_hw_vpath_swapper_set(struct vxge_hw_vpath_reg __iomem *vpath_reg)
|
|
|
* __vxge_hw_kdfc_swapper_set - Set the swapper bits for the kdfc.
|
|
|
* Set the swapper bits appropriately for the vpath.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_kdfc_swapper_set(
|
|
|
struct vxge_hw_legacy_reg __iomem *legacy_reg,
|
|
|
struct vxge_hw_vpath_reg __iomem *vpath_reg)
|
|
@@ -2020,28 +2179,6 @@ __vxge_hw_kdfc_swapper_set(
|
|
|
return VXGE_HW_OK;
|
|
|
}
|
|
|
|
|
|
-/*
|
|
|
- * vxge_hw_mgmt_device_config - Retrieve device configuration.
|
|
|
- * Get device configuration. Permits to retrieve at run-time configuration
|
|
|
- * values that were used to initialize and configure the device.
|
|
|
- */
|
|
|
-enum vxge_hw_status
|
|
|
-vxge_hw_mgmt_device_config(struct __vxge_hw_device *hldev,
|
|
|
- struct vxge_hw_device_config *dev_config, int size)
|
|
|
-{
|
|
|
-
|
|
|
- if ((hldev == NULL) || (hldev->magic != VXGE_HW_DEVICE_MAGIC))
|
|
|
- return VXGE_HW_ERR_INVALID_DEVICE;
|
|
|
-
|
|
|
- if (size != sizeof(struct vxge_hw_device_config))
|
|
|
- return VXGE_HW_ERR_VERSION_CONFLICT;
|
|
|
-
|
|
|
- memcpy(dev_config, &hldev->config,
|
|
|
- sizeof(struct vxge_hw_device_config));
|
|
|
-
|
|
|
- return VXGE_HW_OK;
|
|
|
-}
|
|
|
-
|
|
|
/*
|
|
|
* vxge_hw_mgmt_reg_read - Read Titan register.
|
|
|
*/
|
|
@@ -2438,7 +2575,7 @@ exit:
|
|
|
* __vxge_hw_fifo_abort - Returns the TxD
|
|
|
* This function terminates the TxDs of fifo
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_fifo_abort(struct __vxge_hw_fifo *fifo)
|
|
|
+static enum vxge_hw_status __vxge_hw_fifo_abort(struct __vxge_hw_fifo *fifo)
|
|
|
{
|
|
|
void *txdlh;
|
|
|
|
|
@@ -2466,7 +2603,7 @@ enum vxge_hw_status __vxge_hw_fifo_abort(struct __vxge_hw_fifo *fifo)
|
|
|
* __vxge_hw_fifo_reset - Resets the fifo
|
|
|
* This function resets the fifo during vpath reset operation
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_fifo_reset(struct __vxge_hw_fifo *fifo)
|
|
|
+static enum vxge_hw_status __vxge_hw_fifo_reset(struct __vxge_hw_fifo *fifo)
|
|
|
{
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
|
|
|
@@ -2501,7 +2638,7 @@ enum vxge_hw_status __vxge_hw_fifo_delete(struct __vxge_hw_vpath_handle *vp)
|
|
|
* in pci config space.
|
|
|
* Read from the vpath pci config space.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_pci_read(struct __vxge_hw_virtualpath *vpath,
|
|
|
u32 phy_func_0, u32 offset, u32 *val)
|
|
|
{
|
|
@@ -2542,7 +2679,7 @@ exit:
|
|
|
* __vxge_hw_vpath_func_id_get - Get the function id of the vpath.
|
|
|
* Returns the function number of the vpath.
|
|
|
*/
|
|
|
-u32
|
|
|
+static u32
|
|
|
__vxge_hw_vpath_func_id_get(u32 vp_id,
|
|
|
struct vxge_hw_vpmgmt_reg __iomem *vpmgmt_reg)
|
|
|
{
|
|
@@ -2573,7 +2710,7 @@ __vxge_hw_read_rts_ds(struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
|
* __vxge_hw_vpath_card_info_get - Get the serial numbers,
|
|
|
* part number and product description.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_card_info_get(
|
|
|
u32 vp_id,
|
|
|
struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
@@ -2695,7 +2832,7 @@ __vxge_hw_vpath_card_info_get(
|
|
|
* __vxge_hw_vpath_fw_ver_get - Get the fw version
|
|
|
* Returns FW Version
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_fw_ver_get(
|
|
|
u32 vp_id,
|
|
|
struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
@@ -2789,7 +2926,7 @@ exit:
|
|
|
* __vxge_hw_vpath_pci_func_mode_get - Get the pci mode
|
|
|
* Returns pci function mode
|
|
|
*/
|
|
|
-u64
|
|
|
+static u64
|
|
|
__vxge_hw_vpath_pci_func_mode_get(
|
|
|
u32 vp_id,
|
|
|
struct vxge_hw_vpath_reg __iomem *vpath_reg)
|
|
@@ -2995,7 +3132,7 @@ exit:
|
|
|
* __vxge_hw_vpath_addr_get - Get the hw address entry for this vpath
|
|
|
* from MAC address table.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_addr_get(
|
|
|
u32 vp_id, struct vxge_hw_vpath_reg __iomem *vpath_reg,
|
|
|
u8 (macaddr)[ETH_ALEN], u8 (macaddr_mask)[ETH_ALEN])
|
|
@@ -3347,7 +3484,7 @@ __vxge_hw_vpath_mgmt_read(
|
|
|
* This routine checks the vpath_rst_in_prog register to see if
|
|
|
* adapter completed the reset process for the vpath
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath)
|
|
|
{
|
|
|
enum vxge_hw_status status;
|
|
@@ -3365,7 +3502,7 @@ __vxge_hw_vpath_reset_check(struct __vxge_hw_virtualpath *vpath)
|
|
|
* __vxge_hw_vpath_reset
|
|
|
* This routine resets the vpath on the device
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_reset(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3383,7 +3520,7 @@ __vxge_hw_vpath_reset(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
* __vxge_hw_vpath_sw_reset
|
|
|
* This routine resets the vpath structures
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_sw_reset(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
@@ -3408,7 +3545,7 @@ exit:
|
|
|
* This routine configures the prc registers of virtual path using the config
|
|
|
* passed
|
|
|
*/
|
|
|
-void
|
|
|
+static void
|
|
|
__vxge_hw_vpath_prc_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3480,7 +3617,7 @@ __vxge_hw_vpath_prc_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
* This routine configures the kdfc registers of virtual path using the
|
|
|
* config passed
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_kdfc_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3553,7 +3690,7 @@ exit:
|
|
|
* __vxge_hw_vpath_mac_configure
|
|
|
* This routine configures the mac of virtual path using the config passed
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_mac_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3621,7 +3758,7 @@ __vxge_hw_vpath_mac_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
* This routine configures the tim registers of virtual path using the config
|
|
|
* passed
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_tim_configure(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3897,7 +4034,7 @@ vxge_hw_vpath_tti_ci_set(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
* This routine is the final phase of init which initializes the
|
|
|
* registers of the vpath using the configuration passed.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_initialize(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
u64 val64;
|
|
@@ -3966,7 +4103,7 @@ exit:
|
|
|
* This routine is the initial phase of init which resets the vpath and
|
|
|
* initializes the software support structures.
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vp_initialize(struct __vxge_hw_device *hldev, u32 vp_id,
|
|
|
struct vxge_hw_vp_config *config)
|
|
|
{
|
|
@@ -4022,7 +4159,7 @@ exit:
|
|
|
* __vxge_hw_vp_terminate - Terminate Virtual Path structure
|
|
|
* This routine closes all channels it opened and freeup memory
|
|
|
*/
|
|
|
-void
|
|
|
+static void
|
|
|
__vxge_hw_vp_terminate(struct __vxge_hw_device *hldev, u32 vp_id)
|
|
|
{
|
|
|
struct __vxge_hw_virtualpath *vpath;
|
|
@@ -4384,7 +4521,7 @@ vxge_hw_vpath_enable(struct __vxge_hw_vpath_handle *vp)
|
|
|
* Enable the DMA vpath statistics. The function is to be called to re-enable
|
|
|
* the adapter to update stats into the host memory
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
vxge_hw_vpath_stats_enable(struct __vxge_hw_vpath_handle *vp)
|
|
|
{
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
@@ -4409,7 +4546,7 @@ exit:
|
|
|
* __vxge_hw_vpath_stats_access - Get the statistics from the given location
|
|
|
* and offset and perform an operation
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_stats_access(struct __vxge_hw_virtualpath *vpath,
|
|
|
u32 operation, u32 offset, u64 *stat)
|
|
|
{
|
|
@@ -4445,7 +4582,7 @@ vpath_stats_access_exit:
|
|
|
/*
|
|
|
* __vxge_hw_vpath_xmac_tx_stats_get - Get the TX Statistics of a vpath
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_xmac_tx_stats_get(
|
|
|
struct __vxge_hw_virtualpath *vpath,
|
|
|
struct vxge_hw_xmac_vpath_tx_stats *vpath_tx_stats)
|
|
@@ -4478,9 +4615,9 @@ exit:
|
|
|
/*
|
|
|
* __vxge_hw_vpath_xmac_rx_stats_get - Get the RX Statistics of a vpath
|
|
|
*/
|
|
|
-enum vxge_hw_status
|
|
|
+static enum vxge_hw_status
|
|
|
__vxge_hw_vpath_xmac_rx_stats_get(struct __vxge_hw_virtualpath *vpath,
|
|
|
- struct vxge_hw_xmac_vpath_rx_stats *vpath_rx_stats)
|
|
|
+ struct vxge_hw_xmac_vpath_rx_stats *vpath_rx_stats)
|
|
|
{
|
|
|
u64 *val64;
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
@@ -4509,9 +4646,9 @@ exit:
|
|
|
/*
|
|
|
* __vxge_hw_vpath_stats_get - Get the vpath hw statistics.
|
|
|
*/
|
|
|
-enum vxge_hw_status __vxge_hw_vpath_stats_get(
|
|
|
- struct __vxge_hw_virtualpath *vpath,
|
|
|
- struct vxge_hw_vpath_stats_hw_info *hw_stats)
|
|
|
+static enum vxge_hw_status
|
|
|
+__vxge_hw_vpath_stats_get(struct __vxge_hw_virtualpath *vpath,
|
|
|
+ struct vxge_hw_vpath_stats_hw_info *hw_stats)
|
|
|
{
|
|
|
u64 val64;
|
|
|
enum vxge_hw_status status = VXGE_HW_OK;
|
|
@@ -4643,6 +4780,32 @@ exit:
|
|
|
return status;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+static void vxge_os_dma_malloc_async(struct pci_dev *pdev, void *devh,
|
|
|
+ unsigned long size)
|
|
|
+{
|
|
|
+ gfp_t flags;
|
|
|
+ void *vaddr;
|
|
|
+
|
|
|
+ if (in_interrupt())
|
|
|
+ flags = GFP_ATOMIC | GFP_DMA;
|
|
|
+ else
|
|
|
+ flags = GFP_KERNEL | GFP_DMA;
|
|
|
+
|
|
|
+ vaddr = kmalloc((size), flags);
|
|
|
+
|
|
|
+ vxge_hw_blockpool_block_add(devh, vaddr, size, pdev, pdev);
|
|
|
+}
|
|
|
+
|
|
|
+static void vxge_os_dma_free(struct pci_dev *pdev, const void *vaddr,
|
|
|
+ struct pci_dev **p_dma_acch)
|
|
|
+{
|
|
|
+ unsigned long misaligned = *(unsigned long *)p_dma_acch;
|
|
|
+ u8 *tmp = (u8 *)vaddr;
|
|
|
+ tmp -= misaligned;
|
|
|
+ kfree((void *)tmp);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* __vxge_hw_blockpool_create - Create block pool
|
|
|
*/
|
|
@@ -4845,12 +5008,11 @@ void __vxge_hw_blockpool_blocks_remove(struct __vxge_hw_blockpool *blockpool)
|
|
|
* vxge_hw_blockpool_block_add - callback for vxge_os_dma_malloc_async
|
|
|
* Adds a block to block pool
|
|
|
*/
|
|
|
-void vxge_hw_blockpool_block_add(
|
|
|
- struct __vxge_hw_device *devh,
|
|
|
- void *block_addr,
|
|
|
- u32 length,
|
|
|
- struct pci_dev *dma_h,
|
|
|
- struct pci_dev *acc_handle)
|
|
|
+static void vxge_hw_blockpool_block_add(struct __vxge_hw_device *devh,
|
|
|
+ void *block_addr,
|
|
|
+ u32 length,
|
|
|
+ struct pci_dev *dma_h,
|
|
|
+ struct pci_dev *acc_handle)
|
|
|
{
|
|
|
struct __vxge_hw_blockpool *blockpool;
|
|
|
struct __vxge_hw_blockpool_entry *entry = NULL;
|