diff options
Diffstat (limited to 'drivers/net/vxge/vxge-traffic.h')
-rw-r--r-- | drivers/net/vxge/vxge-traffic.h | 195 |
1 files changed, 20 insertions, 175 deletions
diff --git a/drivers/net/vxge/vxge-traffic.h b/drivers/net/vxge/vxge-traffic.h index 6fa07d13798e..4a518a3b131c 100644 --- a/drivers/net/vxge/vxge-traffic.h +++ b/drivers/net/vxge/vxge-traffic.h | |||
@@ -240,7 +240,7 @@ struct vxge_hw_tim_intr_config { | |||
240 | u32 btimer_val; | 240 | u32 btimer_val; |
241 | #define VXGE_HW_MIN_TIM_BTIMER_VAL 0 | 241 | #define VXGE_HW_MIN_TIM_BTIMER_VAL 0 |
242 | #define VXGE_HW_MAX_TIM_BTIMER_VAL 67108864 | 242 | #define VXGE_HW_MAX_TIM_BTIMER_VAL 67108864 |
243 | #define VXGE_HW_USE_FLASH_DEFAULT 0xffffffff | 243 | #define VXGE_HW_USE_FLASH_DEFAULT (~0) |
244 | 244 | ||
245 | u32 timer_ac_en; | 245 | u32 timer_ac_en; |
246 | #define VXGE_HW_TIM_TIMER_AC_ENABLE 1 | 246 | #define VXGE_HW_TIM_TIMER_AC_ENABLE 1 |
@@ -681,7 +681,7 @@ struct vxge_hw_xmac_aggr_stats { | |||
681 | * @rx_red_discard: Count of received frames that are discarded because of RED | 681 | * @rx_red_discard: Count of received frames that are discarded because of RED |
682 | * (Random Early Discard). | 682 | * (Random Early Discard). |
683 | * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control | 683 | * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control |
684 | * characters occuring between times of normal data transmission | 684 | * characters occurring between times of normal data transmission |
685 | * (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is | 685 | * (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is |
686 | * incremented when either - | 686 | * incremented when either - |
687 | * 1) The Reconciliation Sublayer (RS) is expecting one control | 687 | * 1) The Reconciliation Sublayer (RS) is expecting one control |
@@ -1695,7 +1695,7 @@ struct vxge_hw_device_stats_sw_err { | |||
1695 | * struct vxge_hw_device_stats - Contains HW per-device statistics, | 1695 | * struct vxge_hw_device_stats - Contains HW per-device statistics, |
1696 | * including hw. | 1696 | * including hw. |
1697 | * @devh: HW device handle. | 1697 | * @devh: HW device handle. |
1698 | * @dma_addr: DMA addres of the %hw_info. Given to device to fill-in the stats. | 1698 | * @dma_addr: DMA address of the %hw_info. Given to device to fill-in the stats. |
1699 | * @hw_info_dmah: DMA handle used to map hw statistics onto the device memory | 1699 | * @hw_info_dmah: DMA handle used to map hw statistics onto the device memory |
1700 | * space. | 1700 | * space. |
1701 | * @hw_info_dma_acch: One more DMA handle used subsequently to free the | 1701 | * @hw_info_dma_acch: One more DMA handle used subsequently to free the |
@@ -1749,14 +1749,6 @@ vxge_hw_mrpcim_stats_access( | |||
1749 | u64 *stat); | 1749 | u64 *stat); |
1750 | 1750 | ||
1751 | enum vxge_hw_status | 1751 | enum vxge_hw_status |
1752 | vxge_hw_device_xmac_aggr_stats_get(struct __vxge_hw_device *devh, u32 port, | ||
1753 | struct vxge_hw_xmac_aggr_stats *aggr_stats); | ||
1754 | |||
1755 | enum vxge_hw_status | ||
1756 | vxge_hw_device_xmac_port_stats_get(struct __vxge_hw_device *devh, u32 port, | ||
1757 | struct vxge_hw_xmac_port_stats *port_stats); | ||
1758 | |||
1759 | enum vxge_hw_status | ||
1760 | vxge_hw_device_xmac_stats_get(struct __vxge_hw_device *devh, | 1752 | vxge_hw_device_xmac_stats_get(struct __vxge_hw_device *devh, |
1761 | struct vxge_hw_xmac_stats *xmac_stats); | 1753 | struct vxge_hw_xmac_stats *xmac_stats); |
1762 | 1754 | ||
@@ -1912,34 +1904,6 @@ enum vxge_hw_ring_tcode { | |||
1912 | VXGE_HW_RING_T_CODE_MULTI_ERR = 0xF | 1904 | VXGE_HW_RING_T_CODE_MULTI_ERR = 0xF |
1913 | }; | 1905 | }; |
1914 | 1906 | ||
1915 | /** | ||
1916 | * enum enum vxge_hw_ring_hash_type - RTH hash types | ||
1917 | * @VXGE_HW_RING_HASH_TYPE_NONE: No Hash | ||
1918 | * @VXGE_HW_RING_HASH_TYPE_TCP_IPV4: TCP IPv4 | ||
1919 | * @VXGE_HW_RING_HASH_TYPE_UDP_IPV4: UDP IPv4 | ||
1920 | * @VXGE_HW_RING_HASH_TYPE_IPV4: IPv4 | ||
1921 | * @VXGE_HW_RING_HASH_TYPE_TCP_IPV6: TCP IPv6 | ||
1922 | * @VXGE_HW_RING_HASH_TYPE_UDP_IPV6: UDP IPv6 | ||
1923 | * @VXGE_HW_RING_HASH_TYPE_IPV6: IPv6 | ||
1924 | * @VXGE_HW_RING_HASH_TYPE_TCP_IPV6_EX: TCP IPv6 extension | ||
1925 | * @VXGE_HW_RING_HASH_TYPE_UDP_IPV6_EX: UDP IPv6 extension | ||
1926 | * @VXGE_HW_RING_HASH_TYPE_IPV6_EX: IPv6 extension | ||
1927 | * | ||
1928 | * RTH hash types | ||
1929 | */ | ||
1930 | enum vxge_hw_ring_hash_type { | ||
1931 | VXGE_HW_RING_HASH_TYPE_NONE = 0x0, | ||
1932 | VXGE_HW_RING_HASH_TYPE_TCP_IPV4 = 0x1, | ||
1933 | VXGE_HW_RING_HASH_TYPE_UDP_IPV4 = 0x2, | ||
1934 | VXGE_HW_RING_HASH_TYPE_IPV4 = 0x3, | ||
1935 | VXGE_HW_RING_HASH_TYPE_TCP_IPV6 = 0x4, | ||
1936 | VXGE_HW_RING_HASH_TYPE_UDP_IPV6 = 0x5, | ||
1937 | VXGE_HW_RING_HASH_TYPE_IPV6 = 0x6, | ||
1938 | VXGE_HW_RING_HASH_TYPE_TCP_IPV6_EX = 0x7, | ||
1939 | VXGE_HW_RING_HASH_TYPE_UDP_IPV6_EX = 0x8, | ||
1940 | VXGE_HW_RING_HASH_TYPE_IPV6_EX = 0x9 | ||
1941 | }; | ||
1942 | |||
1943 | enum vxge_hw_status vxge_hw_ring_rxd_reserve( | 1907 | enum vxge_hw_status vxge_hw_ring_rxd_reserve( |
1944 | struct __vxge_hw_ring *ring_handle, | 1908 | struct __vxge_hw_ring *ring_handle, |
1945 | void **rxdh); | 1909 | void **rxdh); |
@@ -2117,49 +2081,6 @@ struct __vxge_hw_ring_rxd_priv { | |||
2117 | #endif | 2081 | #endif |
2118 | }; | 2082 | }; |
2119 | 2083 | ||
2120 | /* ========================= RING PRIVATE API ============================= */ | ||
2121 | u64 | ||
2122 | __vxge_hw_ring_first_block_address_get( | ||
2123 | struct __vxge_hw_ring *ringh); | ||
2124 | |||
2125 | enum vxge_hw_status | ||
2126 | __vxge_hw_ring_create( | ||
2127 | struct __vxge_hw_vpath_handle *vpath_handle, | ||
2128 | struct vxge_hw_ring_attr *attr); | ||
2129 | |||
2130 | enum vxge_hw_status | ||
2131 | __vxge_hw_ring_abort( | ||
2132 | struct __vxge_hw_ring *ringh); | ||
2133 | |||
2134 | enum vxge_hw_status | ||
2135 | __vxge_hw_ring_reset( | ||
2136 | struct __vxge_hw_ring *ringh); | ||
2137 | |||
2138 | enum vxge_hw_status | ||
2139 | __vxge_hw_ring_delete( | ||
2140 | struct __vxge_hw_vpath_handle *vpath_handle); | ||
2141 | |||
2142 | /* ========================= FIFO PRIVATE API ============================= */ | ||
2143 | |||
2144 | struct vxge_hw_fifo_attr; | ||
2145 | |||
2146 | enum vxge_hw_status | ||
2147 | __vxge_hw_fifo_create( | ||
2148 | struct __vxge_hw_vpath_handle *vpath_handle, | ||
2149 | struct vxge_hw_fifo_attr *attr); | ||
2150 | |||
2151 | enum vxge_hw_status | ||
2152 | __vxge_hw_fifo_abort( | ||
2153 | struct __vxge_hw_fifo *fifoh); | ||
2154 | |||
2155 | enum vxge_hw_status | ||
2156 | __vxge_hw_fifo_reset( | ||
2157 | struct __vxge_hw_fifo *ringh); | ||
2158 | |||
2159 | enum vxge_hw_status | ||
2160 | __vxge_hw_fifo_delete( | ||
2161 | struct __vxge_hw_vpath_handle *vpath_handle); | ||
2162 | |||
2163 | struct vxge_hw_mempool_cbs { | 2084 | struct vxge_hw_mempool_cbs { |
2164 | void (*item_func_alloc)( | 2085 | void (*item_func_alloc)( |
2165 | struct vxge_hw_mempool *mempoolh, | 2086 | struct vxge_hw_mempool *mempoolh, |
@@ -2169,10 +2090,6 @@ struct vxge_hw_mempool_cbs { | |||
2169 | u32 is_last); | 2090 | u32 is_last); |
2170 | }; | 2091 | }; |
2171 | 2092 | ||
2172 | void | ||
2173 | __vxge_hw_mempool_destroy( | ||
2174 | struct vxge_hw_mempool *mempool); | ||
2175 | |||
2176 | #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \ | 2093 | #define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath) \ |
2177 | ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next) | 2094 | ((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next) |
2178 | 2095 | ||
@@ -2195,61 +2112,10 @@ __vxge_hw_vpath_rts_table_set( | |||
2195 | u64 data2); | 2112 | u64 data2); |
2196 | 2113 | ||
2197 | enum vxge_hw_status | 2114 | enum vxge_hw_status |
2198 | __vxge_hw_vpath_reset( | ||
2199 | struct __vxge_hw_device *devh, | ||
2200 | u32 vp_id); | ||
2201 | |||
2202 | enum vxge_hw_status | ||
2203 | __vxge_hw_vpath_sw_reset( | ||
2204 | struct __vxge_hw_device *devh, | ||
2205 | u32 vp_id); | ||
2206 | |||
2207 | enum vxge_hw_status | ||
2208 | __vxge_hw_vpath_enable( | 2115 | __vxge_hw_vpath_enable( |
2209 | struct __vxge_hw_device *devh, | 2116 | struct __vxge_hw_device *devh, |
2210 | u32 vp_id); | 2117 | u32 vp_id); |
2211 | 2118 | ||
2212 | void | ||
2213 | __vxge_hw_vpath_prc_configure( | ||
2214 | struct __vxge_hw_device *devh, | ||
2215 | u32 vp_id); | ||
2216 | |||
2217 | enum vxge_hw_status | ||
2218 | __vxge_hw_vpath_kdfc_configure( | ||
2219 | struct __vxge_hw_device *devh, | ||
2220 | u32 vp_id); | ||
2221 | |||
2222 | enum vxge_hw_status | ||
2223 | __vxge_hw_vpath_mac_configure( | ||
2224 | struct __vxge_hw_device *devh, | ||
2225 | u32 vp_id); | ||
2226 | |||
2227 | enum vxge_hw_status | ||
2228 | __vxge_hw_vpath_tim_configure( | ||
2229 | struct __vxge_hw_device *devh, | ||
2230 | u32 vp_id); | ||
2231 | |||
2232 | enum vxge_hw_status | ||
2233 | __vxge_hw_vpath_initialize( | ||
2234 | struct __vxge_hw_device *devh, | ||
2235 | u32 vp_id); | ||
2236 | |||
2237 | enum vxge_hw_status | ||
2238 | __vxge_hw_vp_initialize( | ||
2239 | struct __vxge_hw_device *devh, | ||
2240 | u32 vp_id, | ||
2241 | struct vxge_hw_vp_config *config); | ||
2242 | |||
2243 | void | ||
2244 | __vxge_hw_vp_terminate( | ||
2245 | struct __vxge_hw_device *devh, | ||
2246 | u32 vp_id); | ||
2247 | |||
2248 | enum vxge_hw_status | ||
2249 | __vxge_hw_vpath_alarm_process( | ||
2250 | struct __vxge_hw_virtualpath *vpath, | ||
2251 | u32 skip_alarms); | ||
2252 | |||
2253 | void vxge_hw_device_intr_enable( | 2119 | void vxge_hw_device_intr_enable( |
2254 | struct __vxge_hw_device *devh); | 2120 | struct __vxge_hw_device *devh); |
2255 | 2121 | ||
@@ -2276,6 +2142,10 @@ void vxge_hw_device_clear_tx_rx( | |||
2276 | * Virtual Paths | 2142 | * Virtual Paths |
2277 | */ | 2143 | */ |
2278 | 2144 | ||
2145 | void vxge_hw_vpath_dynamic_rti_rtimer_set(struct __vxge_hw_ring *ring); | ||
2146 | |||
2147 | void vxge_hw_vpath_dynamic_tti_rtimer_set(struct __vxge_hw_fifo *fifo); | ||
2148 | |||
2279 | u32 vxge_hw_vpath_id( | 2149 | u32 vxge_hw_vpath_id( |
2280 | struct __vxge_hw_vpath_handle *vpath_handle); | 2150 | struct __vxge_hw_vpath_handle *vpath_handle); |
2281 | 2151 | ||
@@ -2288,27 +2158,27 @@ enum vxge_hw_vpath_mac_addr_add_mode { | |||
2288 | enum vxge_hw_status | 2158 | enum vxge_hw_status |
2289 | vxge_hw_vpath_mac_addr_add( | 2159 | vxge_hw_vpath_mac_addr_add( |
2290 | struct __vxge_hw_vpath_handle *vpath_handle, | 2160 | struct __vxge_hw_vpath_handle *vpath_handle, |
2291 | u8 (macaddr)[ETH_ALEN], | 2161 | u8 *macaddr, |
2292 | u8 (macaddr_mask)[ETH_ALEN], | 2162 | u8 *macaddr_mask, |
2293 | enum vxge_hw_vpath_mac_addr_add_mode duplicate_mode); | 2163 | enum vxge_hw_vpath_mac_addr_add_mode duplicate_mode); |
2294 | 2164 | ||
2295 | enum vxge_hw_status | 2165 | enum vxge_hw_status |
2296 | vxge_hw_vpath_mac_addr_get( | 2166 | vxge_hw_vpath_mac_addr_get( |
2297 | struct __vxge_hw_vpath_handle *vpath_handle, | 2167 | struct __vxge_hw_vpath_handle *vpath_handle, |
2298 | u8 (macaddr)[ETH_ALEN], | 2168 | u8 *macaddr, |
2299 | u8 (macaddr_mask)[ETH_ALEN]); | 2169 | u8 *macaddr_mask); |
2300 | 2170 | ||
2301 | enum vxge_hw_status | 2171 | enum vxge_hw_status |
2302 | vxge_hw_vpath_mac_addr_get_next( | 2172 | vxge_hw_vpath_mac_addr_get_next( |
2303 | struct __vxge_hw_vpath_handle *vpath_handle, | 2173 | struct __vxge_hw_vpath_handle *vpath_handle, |
2304 | u8 (macaddr)[ETH_ALEN], | 2174 | u8 *macaddr, |
2305 | u8 (macaddr_mask)[ETH_ALEN]); | 2175 | u8 *macaddr_mask); |
2306 | 2176 | ||
2307 | enum vxge_hw_status | 2177 | enum vxge_hw_status |
2308 | vxge_hw_vpath_mac_addr_delete( | 2178 | vxge_hw_vpath_mac_addr_delete( |
2309 | struct __vxge_hw_vpath_handle *vpath_handle, | 2179 | struct __vxge_hw_vpath_handle *vpath_handle, |
2310 | u8 (macaddr)[ETH_ALEN], | 2180 | u8 *macaddr, |
2311 | u8 (macaddr_mask)[ETH_ALEN]); | 2181 | u8 *macaddr_mask); |
2312 | 2182 | ||
2313 | enum vxge_hw_status | 2183 | enum vxge_hw_status |
2314 | vxge_hw_vpath_vid_add( | 2184 | vxge_hw_vpath_vid_add( |
@@ -2321,11 +2191,6 @@ vxge_hw_vpath_vid_get( | |||
2321 | u64 *vid); | 2191 | u64 *vid); |
2322 | 2192 | ||
2323 | enum vxge_hw_status | 2193 | enum vxge_hw_status |
2324 | vxge_hw_vpath_vid_get_next( | ||
2325 | struct __vxge_hw_vpath_handle *vpath_handle, | ||
2326 | u64 *vid); | ||
2327 | |||
2328 | enum vxge_hw_status | ||
2329 | vxge_hw_vpath_vid_delete( | 2194 | vxge_hw_vpath_vid_delete( |
2330 | struct __vxge_hw_vpath_handle *vpath_handle, | 2195 | struct __vxge_hw_vpath_handle *vpath_handle, |
2331 | u64 vid); | 2196 | u64 vid); |
@@ -2384,19 +2249,14 @@ void | |||
2384 | vxge_hw_vpath_msix_mask(struct __vxge_hw_vpath_handle *vpath_handle, | 2249 | vxge_hw_vpath_msix_mask(struct __vxge_hw_vpath_handle *vpath_handle, |
2385 | int msix_id); | 2250 | int msix_id); |
2386 | 2251 | ||
2387 | void vxge_hw_device_flush_io(struct __vxge_hw_device *devh); | 2252 | void vxge_hw_vpath_msix_clear(struct __vxge_hw_vpath_handle *vp, int msix_id); |
2388 | 2253 | ||
2389 | void | 2254 | void vxge_hw_device_flush_io(struct __vxge_hw_device *devh); |
2390 | vxge_hw_vpath_msix_clear(struct __vxge_hw_vpath_handle *vpath_handle, | ||
2391 | int msix_id); | ||
2392 | 2255 | ||
2393 | void | 2256 | void |
2394 | vxge_hw_vpath_msix_unmask(struct __vxge_hw_vpath_handle *vpath_handle, | 2257 | vxge_hw_vpath_msix_unmask(struct __vxge_hw_vpath_handle *vpath_handle, |
2395 | int msix_id); | 2258 | int msix_id); |
2396 | 2259 | ||
2397 | void | ||
2398 | vxge_hw_vpath_msix_mask_all(struct __vxge_hw_vpath_handle *vpath_handle); | ||
2399 | |||
2400 | enum vxge_hw_status vxge_hw_vpath_intr_enable( | 2260 | enum vxge_hw_status vxge_hw_vpath_intr_enable( |
2401 | struct __vxge_hw_vpath_handle *vpath_handle); | 2261 | struct __vxge_hw_vpath_handle *vpath_handle); |
2402 | 2262 | ||
@@ -2415,11 +2275,8 @@ vxge_hw_channel_msix_mask(struct __vxge_hw_channel *channelh, int msix_id); | |||
2415 | void | 2275 | void |
2416 | vxge_hw_channel_msix_unmask(struct __vxge_hw_channel *channelh, int msix_id); | 2276 | vxge_hw_channel_msix_unmask(struct __vxge_hw_channel *channelh, int msix_id); |
2417 | 2277 | ||
2418 | enum vxge_hw_status | ||
2419 | vxge_hw_channel_dtr_alloc(struct __vxge_hw_channel *channel, void **dtrh); | ||
2420 | |||
2421 | void | 2278 | void |
2422 | vxge_hw_channel_dtr_post(struct __vxge_hw_channel *channel, void *dtrh); | 2279 | vxge_hw_channel_msix_clear(struct __vxge_hw_channel *channelh, int msix_id); |
2423 | 2280 | ||
2424 | void | 2281 | void |
2425 | vxge_hw_channel_dtr_try_complete(struct __vxge_hw_channel *channel, | 2282 | vxge_hw_channel_dtr_try_complete(struct __vxge_hw_channel *channel, |
@@ -2433,21 +2290,9 @@ vxge_hw_channel_dtr_free(struct __vxge_hw_channel *channel, void *dtrh); | |||
2433 | 2290 | ||
2434 | int | 2291 | int |
2435 | vxge_hw_channel_dtr_count(struct __vxge_hw_channel *channel); | 2292 | vxge_hw_channel_dtr_count(struct __vxge_hw_channel *channel); |
2436 | void | ||
2437 | vxge_hw_vpath_tti_ci_set(struct __vxge_hw_device *hldev, u32 vp_id); | ||
2438 | 2293 | ||
2439 | /* ========================== PRIVATE API ================================= */ | 2294 | void vxge_hw_vpath_tti_ci_set(struct __vxge_hw_fifo *fifo); |
2440 | 2295 | ||
2441 | enum vxge_hw_status | 2296 | void vxge_hw_vpath_dynamic_rti_ci_set(struct __vxge_hw_ring *ring); |
2442 | __vxge_hw_device_handle_link_up_ind(struct __vxge_hw_device *hldev); | ||
2443 | |||
2444 | enum vxge_hw_status | ||
2445 | __vxge_hw_device_handle_link_down_ind(struct __vxge_hw_device *hldev); | ||
2446 | |||
2447 | enum vxge_hw_status | ||
2448 | __vxge_hw_device_handle_error( | ||
2449 | struct __vxge_hw_device *hldev, | ||
2450 | u32 vp_id, | ||
2451 | enum vxge_hw_event type); | ||
2452 | 2297 | ||
2453 | #endif | 2298 | #endif |