| .. | .. |
|---|
| 1 | 1 | #ifndef _HFI1_SDMA_H |
|---|
| 2 | 2 | #define _HFI1_SDMA_H |
|---|
| 3 | 3 | /* |
|---|
| 4 | | - * Copyright(c) 2015, 2016 Intel Corporation. |
|---|
| 4 | + * Copyright(c) 2015 - 2018 Intel Corporation. |
|---|
| 5 | 5 | * |
|---|
| 6 | 6 | * This file is provided under a dual BSD/GPLv2 license. When using or |
|---|
| 7 | 7 | * redistributing this file, you may do so under either license. |
|---|
| .. | .. |
|---|
| 61 | 61 | #define MAX_DESC 64 |
|---|
| 62 | 62 | /* Hardware limit for SDMA packet size */ |
|---|
| 63 | 63 | #define MAX_SDMA_PKT_SIZE ((16 * 1024) - 1) |
|---|
| 64 | | - |
|---|
| 65 | | -#define SDMA_TXREQ_S_OK 0 |
|---|
| 66 | | -#define SDMA_TXREQ_S_SENDERROR 1 |
|---|
| 67 | | -#define SDMA_TXREQ_S_ABORTED 2 |
|---|
| 68 | | -#define SDMA_TXREQ_S_SHUTDOWN 3 |
|---|
| 69 | | - |
|---|
| 70 | | -/* flags bits */ |
|---|
| 71 | | -#define SDMA_TXREQ_F_URGENT 0x0001 |
|---|
| 72 | | -#define SDMA_TXREQ_F_AHG_COPY 0x0002 |
|---|
| 73 | | -#define SDMA_TXREQ_F_USE_AHG 0x0004 |
|---|
| 74 | 64 | |
|---|
| 75 | 65 | #define SDMA_MAP_NONE 0 |
|---|
| 76 | 66 | #define SDMA_MAP_SINGLE 1 |
|---|
| .. | .. |
|---|
| 392 | 382 | u64 progress_int_cnt; |
|---|
| 393 | 383 | |
|---|
| 394 | 384 | /* private: */ |
|---|
| 385 | + seqlock_t waitlock; |
|---|
| 395 | 386 | struct list_head dmawait; |
|---|
| 396 | 387 | |
|---|
| 397 | 388 | /* CONFIG SDMA for now, just blindly duplicate */ |
|---|
| .. | .. |
|---|
| 415 | 406 | struct list_head flushlist; |
|---|
| 416 | 407 | struct cpumask cpu_mask; |
|---|
| 417 | 408 | struct kobject kobj; |
|---|
| 409 | + u32 msix_intr; |
|---|
| 418 | 410 | }; |
|---|
| 419 | 411 | |
|---|
| 420 | 412 | int sdma_init(struct hfi1_devdata *dd, u8 port); |
|---|
| .. | .. |
|---|
| 849 | 841 | dd, SDMA_MAP_SINGLE, tx, addr, len); |
|---|
| 850 | 842 | } |
|---|
| 851 | 843 | |
|---|
| 852 | | -struct iowait; |
|---|
| 844 | +struct iowait_work; |
|---|
| 853 | 845 | |
|---|
| 854 | 846 | int sdma_send_txreq(struct sdma_engine *sde, |
|---|
| 855 | | - struct iowait *wait, |
|---|
| 847 | + struct iowait_work *wait, |
|---|
| 856 | 848 | struct sdma_txreq *tx, |
|---|
| 857 | 849 | bool pkts_sent); |
|---|
| 858 | 850 | int sdma_send_txlist(struct sdma_engine *sde, |
|---|
| 859 | | - struct iowait *wait, |
|---|
| 851 | + struct iowait_work *wait, |
|---|
| 860 | 852 | struct list_head *tx_list, |
|---|
| 861 | | - u32 *count); |
|---|
| 853 | + u16 *count_out); |
|---|
| 862 | 854 | |
|---|
| 863 | 855 | int sdma_ahg_alloc(struct sdma_engine *sde); |
|---|
| 864 | 856 | void sdma_ahg_free(struct sdma_engine *sde, int ahg_index); |
|---|
| .. | .. |
|---|
| 1010 | 1002 | */ |
|---|
| 1011 | 1003 | struct sdma_map_elem { |
|---|
| 1012 | 1004 | u32 mask; |
|---|
| 1013 | | - struct sdma_engine *sde[0]; |
|---|
| 1005 | + struct sdma_engine *sde[]; |
|---|
| 1014 | 1006 | }; |
|---|
| 1015 | 1007 | |
|---|
| 1016 | 1008 | /** |
|---|
| .. | .. |
|---|
| 1032 | 1024 | u32 mask; |
|---|
| 1033 | 1025 | u8 actual_vls; |
|---|
| 1034 | 1026 | u8 vls; |
|---|
| 1035 | | - struct sdma_map_elem *map[0]; |
|---|
| 1027 | + struct sdma_map_elem *map[]; |
|---|
| 1036 | 1028 | }; |
|---|
| 1037 | 1029 | |
|---|
| 1038 | 1030 | int sdma_map_init( |
|---|