删除了ul方向数据包是否及时被RC读取的判断
This commit is contained in:
parent
cf575de36e
commit
842d1d638d
@ -176,11 +176,12 @@ static inline int32_t ucp_pcie_dl_worker(uint32_t inst_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t extInc, intInc;
|
uint32_t extInc = 0;
|
||||||
uint32_t t_idx;
|
uint32_t intInc = 0;
|
||||||
|
uint32_t t_idx = 0;
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
UcpPcieDmaThread_t* pDmaThread;
|
UcpPcieDmaThread_t* pDmaThread = NULL;
|
||||||
UcpPcieDmaComplete_t* pCmplt;
|
UcpPcieDmaComplete_t* pCmplt = NULL;
|
||||||
uint32_t num_rx_queues = MAX_Q_NUM_DL_TRAFFIC;//跟业务queue对应,共6个queue
|
uint32_t num_rx_queues = MAX_Q_NUM_DL_TRAFFIC;//跟业务queue对应,共6个queue
|
||||||
//按照传输队列判断,是否有队列已经传输完成,传输队列一共有6个
|
//按照传输队列判断,是否有队列已经传输完成,传输队列一共有6个
|
||||||
for(i = 0; i < MAX_INSTANCE_NUM; i++)
|
for(i = 0; i < MAX_INSTANCE_NUM; i++)
|
||||||
@ -222,19 +223,21 @@ static inline int32_t ucp_pcie_dl_worker(uint32_t inst_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//uint32_t dma_idx;
|
//uint32_t dma_idx;
|
||||||
uint32_t n, N;
|
uint32_t n =0;
|
||||||
|
uint32_t N = 0;
|
||||||
//uint32_t ext_size;
|
//uint32_t ext_size;
|
||||||
uint32_t freed;
|
uint32_t freed = 0;
|
||||||
uint32_t ext_idx;
|
uint32_t ext_idx = 0;
|
||||||
//int8_t desc_idx;
|
//int8_t desc_idx;
|
||||||
uint32_t pcieOffset;
|
uint32_t pcieOffset = 0;
|
||||||
uint32_t H, L;
|
uint32_t H = 0;
|
||||||
uint64_t dst_addr;
|
uint32_t L = 0;
|
||||||
UcpExtTraffic_t* ext_ch;
|
uint64_t dst_addr = 0;
|
||||||
PcieTrafficDescriptor_t *desc_hdr;
|
UcpExtTraffic_t* ext_ch = NULL;
|
||||||
PcieTrafficDescriptor_t *desc;
|
PcieTrafficDescriptor_t *desc_hdr = NULL;
|
||||||
MsgMemBufAttr_t* attr;
|
PcieTrafficDescriptor_t *desc = NULL;
|
||||||
DwPcieEpDmaChDesc_t rdma_desc_ch[MAX_CH_NUM_UCP_DMA];
|
MsgMemBufAttr_t* attr = NULL;
|
||||||
|
DwPcieEpDmaChDesc_t rdma_desc_ch[MAX_CH_NUM_UCP_DMA] = {0};
|
||||||
//判断是否有业务队列需要接收数据包,如果有需要接收的数据,则寻找一个空闲DMA读通道进行接收
|
//判断是否有业务队列需要接收数据包,如果有需要接收的数据,则寻找一个空闲DMA读通道进行接收
|
||||||
for (k = 0; k < num_rx_queues; k++) {
|
for (k = 0; k < num_rx_queues; k++) {
|
||||||
ext_ch = pUcpPcieMemInfo->pExtDlTraffic[inst_id][k];
|
ext_ch = pUcpPcieMemInfo->pExtDlTraffic[inst_id][k];
|
||||||
@ -411,10 +414,11 @@ static inline int32_t ucp_pcie_ul_worker(uint32_t inst_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t extInc, intInc;
|
uint32_t extInc = 0;
|
||||||
uint32_t t_idx;
|
uint32_t intInc = 0;
|
||||||
UcpPcieDmaThread_t* pDmaThread;
|
uint32_t t_idx = 0;
|
||||||
UcpPcieDmaComplete_t* pCmplt;
|
UcpPcieDmaThread_t* pDmaThread = NULL;
|
||||||
|
UcpPcieDmaComplete_t* pCmplt = NULL;
|
||||||
uint32_t num_tx_queues = MAX_Q_NUM_UL_TRAFFIC;
|
uint32_t num_tx_queues = MAX_Q_NUM_UL_TRAFFIC;
|
||||||
uint32_t i = 0;
|
uint32_t i = 0;
|
||||||
for(i = 0; i < MAX_INSTANCE_NUM; i++)
|
for(i = 0; i < MAX_INSTANCE_NUM; i++)
|
||||||
@ -464,22 +468,24 @@ static inline int32_t ucp_pcie_ul_worker(uint32_t inst_id)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//uint32_t dma_idx;
|
//uint32_t dma_idx;
|
||||||
uint32_t n, N;
|
uint32_t n = 0;
|
||||||
uint32_t int_num, ext_num;
|
uint32_t N = 0;
|
||||||
|
uint32_t int_num, ext_num = 0;
|
||||||
//uint32_t ext_size;
|
//uint32_t ext_size;
|
||||||
uint32_t freed;
|
uint32_t freed = 0;
|
||||||
uint32_t ext_idx;
|
uint32_t ext_idx = 0;
|
||||||
//uint32_t desc_idx;
|
//uint32_t desc_idx;
|
||||||
//int8_t buf_idx;
|
//int8_t buf_idx;
|
||||||
uint32_t pcieOffset;
|
uint32_t pcieOffset = 0;
|
||||||
uint32_t H, L;
|
uint32_t H = 0;
|
||||||
uint64_t src_addr;
|
uint32_t L = 0;
|
||||||
UcpExtTraffic_t* ext_ch;
|
uint64_t src_addr = 0;
|
||||||
MsgQueueLocalInfo_t* int_ch;
|
UcpExtTraffic_t* ext_ch = NULL;
|
||||||
PcieTrafficDescriptor_t *desc_hdr;
|
MsgQueueLocalInfo_t* int_ch = NULL;
|
||||||
PcieTrafficDescriptor_t *desc;
|
PcieTrafficDescriptor_t *desc_hdr = NULL;
|
||||||
MsgMemBufAttr_t* attr;
|
PcieTrafficDescriptor_t *desc = NULL;
|
||||||
DwPcieEpDmaChDesc_t wdma_desc_ch[MAX_CH_NUM_UCP_DMA];
|
MsgMemBufAttr_t* attr = NULL;
|
||||||
|
DwPcieEpDmaChDesc_t wdma_desc_ch[MAX_CH_NUM_UCP_DMA] = {0};
|
||||||
//检查是否有通道需要有数据发送,一共6个queue,逐个通道检查
|
//检查是否有通道需要有数据发送,一共6个queue,逐个通道检查
|
||||||
for (k = 0; k < num_tx_queues; k++, N = 0) {
|
for (k = 0; k < num_tx_queues; k++, N = 0) {
|
||||||
//ucp_queue_ul_update_in(k);
|
//ucp_queue_ul_update_in(k);
|
||||||
@ -489,7 +495,7 @@ static inline int32_t ucp_pcie_ul_worker(uint32_t inst_id)
|
|||||||
int_num = int_ch->in - int_ch->out;//本次要传输的数据包的个数
|
int_num = int_ch->in - int_ch->out;//本次要传输的数据包的个数
|
||||||
if(0 == int_num)
|
if(0 == int_num)
|
||||||
{
|
{
|
||||||
PCIE_DEBUG_LOG("UL no pkt need send! TRCCNT[[%d][%d] = %d epcntIng = %d\n", inst_id, k, pCnt->dlTxCounter[inst_id][k], ext_ch->epCntIng);
|
PCIE_DEBUG_LOG("UL no pkt need send! TRCCNT[[%d][%d] = %d epcntIng = %d\n", inst_id, k, pCnt->ulTxCounter[inst_id][k], ext_ch->epCntIng);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if(int_num > pCnt->ulDescNum[inst_id][k])//MAX_THREAD_NUM_UCP_DMA)
|
if(int_num > pCnt->ulDescNum[inst_id][k])//MAX_THREAD_NUM_UCP_DMA)
|
||||||
@ -502,7 +508,9 @@ static inline int32_t ucp_pcie_ul_worker(uint32_t inst_id)
|
|||||||
}
|
}
|
||||||
PCIE_DEBUG_LOG("UL localUlQueue[%d][%d] int_ch->in=%d int_ch->out=%d int_num= %d \n", inst_id, k, int_ch->in, int_ch->out, int_num);
|
PCIE_DEBUG_LOG("UL localUlQueue[%d][%d] int_ch->in=%d int_ch->out=%d int_num= %d \n", inst_id, k, int_ch->in, int_ch->out, int_num);
|
||||||
PCIE_DEBUG_LOG("UL pCnt->ulDescNum[%d][%d] = %d ext_ch->epCntIng=%d pCnt->ulRxCounter[%d][%d]=%d \n",
|
PCIE_DEBUG_LOG("UL pCnt->ulDescNum[%d][%d] = %d ext_ch->epCntIng=%d pCnt->ulRxCounter[%d][%d]=%d \n",
|
||||||
inst_id, k, pCnt->ulDescNum[inst_id][k], ext_ch->epCntIng, inst_id, k, pCnt->ulRxCounter[inst_id][k]);
|
inst_id, k, pCnt->ulDescNum[inst_id][k], ext_ch->epCntIng, inst_id, k, pCnt->ulRxCounter[inst_id][k]);
|
||||||
|
N = int_num;
|
||||||
|
#if 0
|
||||||
ext_num = pCnt->ulDescNum[inst_id][k] - ((ext_ch->epCntIng - pCnt->ulRxCounter[inst_id][k]) & pCnt->ulDescNum[inst_id][k]); //此处需要对描述符取模,否则如果一直发送,但是没有接收,则会导致DMA无法启动
|
ext_num = pCnt->ulDescNum[inst_id][k] - ((ext_ch->epCntIng - pCnt->ulRxCounter[inst_id][k]) & pCnt->ulDescNum[inst_id][k]); //此处需要对描述符取模,否则如果一直发送,但是没有接收,则会导致DMA无法启动
|
||||||
N = (int_num < ext_num) ? int_num : ext_num; //此处是判断Bar空间上的传输描述符个数是否够本次传输,取出本次传输的数据包的个数
|
N = (int_num < ext_num) ? int_num : ext_num; //此处是判断Bar空间上的传输描述符个数是否够本次传输,取出本次传输的数据包的个数
|
||||||
if (0 == N)
|
if (0 == N)
|
||||||
@ -510,6 +518,7 @@ static inline int32_t ucp_pcie_ul_worker(uint32_t inst_id)
|
|||||||
PCIE_DEBUG_LOG("UL not free bar desc N = %d\n", N);
|
PCIE_DEBUG_LOG("UL not free bar desc N = %d\n", N);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
PCIE_DEBUG_LOG("UL INT_CH[%d][%d] = 0x%x N = %d in = %d out = %d ext_num = %d \n", inst_id, k, (uint32_t)int_ch, N, int_ch->in, int_ch->out, ext_num);
|
PCIE_DEBUG_LOG("UL INT_CH[%d][%d] = 0x%x N = %d in = %d out = %d ext_num = %d \n", inst_id, k, (uint32_t)int_ch, N, int_ch->in, int_ch->out, ext_num);
|
||||||
PCIE_DEBUG_LOG("UL pCnt->ulRxCounter[%d][%d]= %d pCnt->ulTxCounter[%d][%d] = %d\n", inst_id, k, pCnt->ulRxCounter[inst_id][k], inst_id, k, pCnt->ulTxCounter[inst_id][k]);
|
PCIE_DEBUG_LOG("UL pCnt->ulRxCounter[%d][%d]= %d pCnt->ulTxCounter[%d][%d] = %d\n", inst_id, k, pCnt->ulRxCounter[inst_id][k], inst_id, k, pCnt->ulTxCounter[inst_id][k]);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user