qcacmn: Stop FISA if frame rings mismatch
If frames from the same FISA flow goes into different REO2SW rings, it will result in an unexpected FISA behavior. This can happen if the frames have been reinjected from FW offload module since FW will select REO2SW1 ring. If the same flow frames hash to other REO2SW rings, then the same flow UDP frames will do to different rings. Reo_destination_indication of 6 indicates if the frame has been reinjected from FW. If so, then continue to deliver the packet without FISA. Change-Id: I14a17a10d04909adfb30557d58beb1610e59bf70 CRs-Fixed: 2790292
这个提交包含在:
@@ -3370,6 +3370,32 @@ hal_rx_msdu_flow_idx_get(hal_soc_handle_t hal_soc_hdl,
|
||||
return hal_soc->ops->hal_rx_msdu_flow_idx_get(buf);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_rx_msdu_get_reo_destination_indication: API to get reo
|
||||
* destination index from rx_msdu_end TLV
|
||||
* @buf: pointer to the start of RX PKT TLV headers
|
||||
* @reo_destination_indication: pointer to return value of
|
||||
* reo_destination_indication
|
||||
*
|
||||
* Return: reo_destination_indication value from MSDU END TLV
|
||||
*/
|
||||
static inline void
|
||||
hal_rx_msdu_get_reo_destination_indication(hal_soc_handle_t hal_soc_hdl,
|
||||
uint8_t *buf,
|
||||
uint32_t *reo_destination_indication)
|
||||
{
|
||||
struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
|
||||
|
||||
if ((!hal_soc) || (!hal_soc->ops)) {
|
||||
hal_err("hal handle is NULL");
|
||||
QDF_BUG(0);
|
||||
return;
|
||||
}
|
||||
|
||||
hal_soc->ops->hal_rx_msdu_get_reo_destination_indication(buf,
|
||||
reo_destination_indication);
|
||||
}
|
||||
|
||||
/**
|
||||
* hal_rx_msdu_flow_idx_timeout: API to get flow index timeout
|
||||
* from rx_msdu_end TLV
|
||||
|
在新工单中引用
屏蔽一个用户