qcacmn: Datapath changes for WiSA specification
Datapath changes for WiSA specification. - Multicast packets with 50000 as destination port should go at 6Mbps. - Multicast packets with 50001 as destination port should go at 24Mbps. Change-Id: I582b13fd85e2bdc0e49739a1c6f8d8a3b295902f CRs-Fixed: 1010412
This commit is contained in:

committed by
Vishwajith Upendra

parent
31d694b25a
commit
da0881a68f
@@ -575,8 +575,6 @@ void hif_process_runtime_resume_success(struct hif_opaque_softc *);
|
|||||||
int hif_dump_registers(struct hif_opaque_softc *scn);
|
int hif_dump_registers(struct hif_opaque_softc *scn);
|
||||||
int ol_copy_ramdump(struct hif_opaque_softc *scn);
|
int ol_copy_ramdump(struct hif_opaque_softc *scn);
|
||||||
void hif_crash_shutdown(struct hif_opaque_softc *hif_ctx);
|
void hif_crash_shutdown(struct hif_opaque_softc *hif_ctx);
|
||||||
void hif_bus_pkt_dl_len_set(struct hif_opaque_softc *hif_sc,
|
|
||||||
unsigned int pkt_download_len);
|
|
||||||
void hif_get_hw_info(struct hif_opaque_softc *scn, u32 *version, u32 *revision,
|
void hif_get_hw_info(struct hif_opaque_softc *scn, u32 *version, u32 *revision,
|
||||||
const char **target_name);
|
const char **target_name);
|
||||||
void hif_lro_flush_cb_register(struct hif_opaque_softc *scn,
|
void hif_lro_flush_cb_register(struct hif_opaque_softc *scn,
|
||||||
@@ -598,8 +596,8 @@ qdf_nbuf_t hif_batch_send(struct hif_opaque_softc *osc, qdf_nbuf_t msdu,
|
|||||||
uint32_t transfer_id, u_int32_t len, uint32_t sendhead);
|
uint32_t transfer_id, u_int32_t len, uint32_t sendhead);
|
||||||
int hif_send_single(struct hif_opaque_softc *osc, qdf_nbuf_t msdu, uint32_t
|
int hif_send_single(struct hif_opaque_softc *osc, qdf_nbuf_t msdu, uint32_t
|
||||||
transfer_id, u_int32_t len);
|
transfer_id, u_int32_t len);
|
||||||
int hif_send_fast(struct hif_opaque_softc *osc, qdf_nbuf_t *nbuf_arr, uint32_t
|
int hif_send_fast(struct hif_opaque_softc *osc, qdf_nbuf_t nbuf,
|
||||||
num_msdus, uint32_t transfer_id);
|
uint32_t transfer_id, uint32_t download_len);
|
||||||
void hif_pkt_dl_len_set(void *hif_sc, unsigned int pkt_download_len);
|
void hif_pkt_dl_len_set(void *hif_sc, unsigned int pkt_download_len);
|
||||||
void hif_ce_war_disable(void);
|
void hif_ce_war_disable(void);
|
||||||
void hif_ce_war_enable(void);
|
void hif_ce_war_enable(void);
|
||||||
|
@@ -150,11 +150,10 @@ int ce_send(struct CE_handle *copyeng,
|
|||||||
unsigned int user_flags);
|
unsigned int user_flags);
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_FASTPATH
|
#ifdef WLAN_FEATURE_FASTPATH
|
||||||
int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t msdu,
|
||||||
unsigned int num_msdus, unsigned int transfer_id);
|
unsigned int transfer_id, uint32_t download_len);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
void ce_pkt_dl_len_set(void *hif_sc, unsigned int pkt_download_len);
|
|
||||||
|
|
||||||
void ce_update_tx_ring(struct CE_handle *ce_tx_hdl, uint32_t num_htt_cmpls);
|
void ce_update_tx_ring(struct CE_handle *ce_tx_hdl, uint32_t num_htt_cmpls);
|
||||||
extern qdf_nbuf_t ce_batch_send(struct CE_handle *ce_tx_hdl,
|
extern qdf_nbuf_t ce_batch_send(struct CE_handle *ce_tx_hdl,
|
||||||
|
@@ -107,7 +107,6 @@ struct CE_state {
|
|||||||
enum CE_op_state state;
|
enum CE_op_state state;
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_FASTPATH
|
#ifdef WLAN_FEATURE_FASTPATH
|
||||||
u_int32_t download_len; /* pkt download length for source ring */
|
|
||||||
fastpath_msg_handler fastpath_handler;
|
fastpath_msg_handler fastpath_handler;
|
||||||
void *context;
|
void *context;
|
||||||
#endif /* WLAN_FEATURE_FASTPATH */
|
#endif /* WLAN_FEATURE_FASTPATH */
|
||||||
|
@@ -539,9 +539,9 @@ ce_buffer_addr_hi_set(struct CE_src_desc *shadow_src_desc,
|
|||||||
/**
|
/**
|
||||||
* ce_send_fast() CE layer Tx buffer posting function
|
* ce_send_fast() CE layer Tx buffer posting function
|
||||||
* @copyeng: copy engine handle
|
* @copyeng: copy engine handle
|
||||||
* @msdus: iarray of msdu to be sent
|
* @msdu: msdu to be sent
|
||||||
* @num_msdus: number of msdus in an array
|
|
||||||
* @transfer_id: transfer_id
|
* @transfer_id: transfer_id
|
||||||
|
* @download_len: packet download length
|
||||||
*
|
*
|
||||||
* Assumption : Called with an array of MSDU's
|
* Assumption : Called with an array of MSDU's
|
||||||
* Function:
|
* Function:
|
||||||
@@ -552,8 +552,8 @@ ce_buffer_addr_hi_set(struct CE_src_desc *shadow_src_desc,
|
|||||||
*
|
*
|
||||||
* Return: No. of packets that could be sent
|
* Return: No. of packets that could be sent
|
||||||
*/
|
*/
|
||||||
int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t msdu,
|
||||||
unsigned int num_msdus, unsigned int transfer_id)
|
unsigned int transfer_id, uint32_t download_len)
|
||||||
{
|
{
|
||||||
struct CE_state *ce_state = (struct CE_state *)copyeng;
|
struct CE_state *ce_state = (struct CE_state *)copyeng;
|
||||||
struct hif_softc *scn = ce_state->scn;
|
struct hif_softc *scn = ce_state->scn;
|
||||||
@@ -564,8 +564,6 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
unsigned int write_index;
|
unsigned int write_index;
|
||||||
unsigned int sw_index;
|
unsigned int sw_index;
|
||||||
unsigned int frag_len;
|
unsigned int frag_len;
|
||||||
qdf_nbuf_t msdu;
|
|
||||||
int i;
|
|
||||||
uint64_t dma_addr;
|
uint64_t dma_addr;
|
||||||
uint32_t user_flags;
|
uint32_t user_flags;
|
||||||
|
|
||||||
@@ -581,9 +579,9 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
NULL, NULL, write_index);
|
NULL, NULL, write_index);
|
||||||
|
|
||||||
if (qdf_unlikely(CE_RING_DELTA(nentries_mask, write_index, sw_index - 1)
|
if (qdf_unlikely(CE_RING_DELTA(nentries_mask, write_index, sw_index - 1)
|
||||||
< (SLOTS_PER_DATAPATH_TX * num_msdus))) {
|
< SLOTS_PER_DATAPATH_TX)) {
|
||||||
HIF_ERROR("Source ring full, required %d, available %d",
|
HIF_ERROR("Source ring full, required %d, available %d",
|
||||||
(SLOTS_PER_DATAPATH_TX * num_msdus),
|
SLOTS_PER_DATAPATH_TX,
|
||||||
CE_RING_DELTA(nentries_mask, write_index, sw_index - 1));
|
CE_RING_DELTA(nentries_mask, write_index, sw_index - 1));
|
||||||
OL_ATH_CE_PKT_ERROR_COUNT_INCR(scn, CE_RING_DELTA_FAIL);
|
OL_ATH_CE_PKT_ERROR_COUNT_INCR(scn, CE_RING_DELTA_FAIL);
|
||||||
Q_TARGET_ACCESS_END(scn);
|
Q_TARGET_ACCESS_END(scn);
|
||||||
@@ -591,8 +589,7 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 2 msdus per packet */
|
{
|
||||||
for (i = 0; i < num_msdus; i++) {
|
|
||||||
struct CE_src_desc *src_ring_base =
|
struct CE_src_desc *src_ring_base =
|
||||||
(struct CE_src_desc *)src_ring->base_addr_owner_space;
|
(struct CE_src_desc *)src_ring->base_addr_owner_space;
|
||||||
struct CE_src_desc *shadow_base =
|
struct CE_src_desc *shadow_base =
|
||||||
@@ -603,7 +600,6 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
CE_SRC_RING_TO_DESC(shadow_base, write_index);
|
CE_SRC_RING_TO_DESC(shadow_base, write_index);
|
||||||
|
|
||||||
hif_pm_runtime_get_noresume(hif_hdl);
|
hif_pm_runtime_get_noresume(hif_hdl);
|
||||||
msdu = msdus[i];
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* First fill out the ring descriptor for the HTC HTT frame
|
* First fill out the ring descriptor for the HTC HTT frame
|
||||||
@@ -616,10 +612,9 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
0xFFFFFFFF);
|
0xFFFFFFFF);
|
||||||
user_flags = qdf_nbuf_data_attr_get(msdu) & DESC_DATA_FLAG_MASK;
|
user_flags = qdf_nbuf_data_attr_get(msdu) & DESC_DATA_FLAG_MASK;
|
||||||
ce_buffer_addr_hi_set(shadow_src_desc, dma_addr, user_flags);
|
ce_buffer_addr_hi_set(shadow_src_desc, dma_addr, user_flags);
|
||||||
|
shadow_src_desc->meta_data = transfer_id;
|
||||||
shadow_src_desc->meta_data = transfer_id;
|
|
||||||
shadow_src_desc->nbytes = qdf_nbuf_get_frag_len(msdu, 0);
|
shadow_src_desc->nbytes = qdf_nbuf_get_frag_len(msdu, 0);
|
||||||
|
download_len -= shadow_src_desc->nbytes;
|
||||||
/*
|
/*
|
||||||
* HTC HTT header is a word stream, so byte swap if CE byte
|
* HTC HTT header is a word stream, so byte swap if CE byte
|
||||||
* swap enabled
|
* swap enabled
|
||||||
@@ -629,13 +624,11 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
/* For the first one, it still does not need to write */
|
/* For the first one, it still does not need to write */
|
||||||
shadow_src_desc->gather = 1;
|
shadow_src_desc->gather = 1;
|
||||||
*src_desc = *shadow_src_desc;
|
*src_desc = *shadow_src_desc;
|
||||||
|
|
||||||
/* By default we could initialize the transfer context to this
|
/* By default we could initialize the transfer context to this
|
||||||
* value
|
* value
|
||||||
*/
|
*/
|
||||||
src_ring->per_transfer_context[write_index] =
|
src_ring->per_transfer_context[write_index] =
|
||||||
CE_SENDLIST_ITEM_CTXT;
|
CE_SENDLIST_ITEM_CTXT;
|
||||||
|
|
||||||
write_index = CE_RING_IDX_INCR(nentries_mask, write_index);
|
write_index = CE_RING_IDX_INCR(nentries_mask, write_index);
|
||||||
|
|
||||||
src_desc = CE_SRC_RING_TO_DESC(src_ring_base, write_index);
|
src_desc = CE_SRC_RING_TO_DESC(src_ring_base, write_index);
|
||||||
@@ -657,8 +650,8 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
/* get actual packet length */
|
/* get actual packet length */
|
||||||
frag_len = qdf_nbuf_get_frag_len(msdu, 1);
|
frag_len = qdf_nbuf_get_frag_len(msdu, 1);
|
||||||
|
|
||||||
/* only read download_len once */
|
/* download remaining bytes of payload */
|
||||||
shadow_src_desc->nbytes = ce_state->download_len;
|
shadow_src_desc->nbytes = download_len;
|
||||||
if (shadow_src_desc->nbytes > frag_len)
|
if (shadow_src_desc->nbytes > frag_len)
|
||||||
shadow_src_desc->nbytes = frag_len;
|
shadow_src_desc->nbytes = frag_len;
|
||||||
|
|
||||||
@@ -676,34 +669,27 @@ int ce_send_fast(struct CE_handle *copyeng, qdf_nbuf_t *msdus,
|
|||||||
sizeof(qdf_nbuf_data(msdu)), QDF_TX));
|
sizeof(qdf_nbuf_data(msdu)), QDF_TX));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Write the final index to h/w one-shot */
|
src_ring->write_index = write_index;
|
||||||
if (i) {
|
|
||||||
src_ring->write_index = write_index;
|
|
||||||
|
|
||||||
if (hif_pm_runtime_get(hif_hdl) == 0) {
|
if (hif_pm_runtime_get(hif_hdl) == 0) {
|
||||||
hif_record_ce_desc_event(scn, ce_state->id,
|
hif_record_ce_desc_event(scn, ce_state->id,
|
||||||
FAST_TX_WRITE_INDEX_UPDATE,
|
FAST_TX_WRITE_INDEX_UPDATE,
|
||||||
NULL, NULL, write_index);
|
NULL, NULL, write_index);
|
||||||
|
|
||||||
/* Don't call WAR_XXX from here
|
/* Don't call WAR_XXX from here
|
||||||
* Just call XXX instead, that has the reqd. intel
|
* Just call XXX instead, that has the reqd. intel
|
||||||
*/
|
*/
|
||||||
war_ce_src_ring_write_idx_set(scn, ctrl_addr,
|
war_ce_src_ring_write_idx_set(scn, ctrl_addr,
|
||||||
write_index);
|
write_index);
|
||||||
hif_pm_runtime_put(hif_hdl);
|
hif_pm_runtime_put(hif_hdl);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Q_TARGET_ACCESS_END(scn);
|
Q_TARGET_ACCESS_END(scn);
|
||||||
qdf_spin_unlock_bh(&ce_state->ce_index_lock);
|
qdf_spin_unlock_bh(&ce_state->ce_index_lock);
|
||||||
|
|
||||||
/*
|
/* sent 1 packet */
|
||||||
* If all packets in the array are transmitted,
|
return 1;
|
||||||
* i = num_msdus
|
|
||||||
* Temporarily add an ASSERT
|
|
||||||
*/
|
|
||||||
ASSERT(i == num_msdus);
|
|
||||||
return i;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2216,32 +2202,6 @@ ce_watermark_cb_register(struct CE_handle *copyeng,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef WLAN_FEATURE_FASTPATH
|
|
||||||
/**
|
|
||||||
* ce_pkt_dl_len_set() set the HTT packet download length
|
|
||||||
* @hif_sc: HIF context
|
|
||||||
* @pkt_download_len: download length
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
void ce_pkt_dl_len_set(void *hif_sc, u_int32_t pkt_download_len)
|
|
||||||
{
|
|
||||||
struct hif_softc *sc = (struct hif_softc *)(hif_sc);
|
|
||||||
struct CE_state *ce_state = sc->ce_id_to_state[CE_HTT_H2T_MSG];
|
|
||||||
|
|
||||||
qdf_assert_always(ce_state);
|
|
||||||
|
|
||||||
ce_state->download_len = pkt_download_len;
|
|
||||||
|
|
||||||
qdf_print("%s CE %d Pkt download length %d", __func__,
|
|
||||||
ce_state->id, ce_state->download_len);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
void ce_pkt_dl_len_set(void *hif_sc, u_int32_t pkt_download_len)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
#endif /* WLAN_FEATURE_FASTPATH */
|
|
||||||
|
|
||||||
bool ce_get_rx_pending(struct hif_softc *scn)
|
bool ce_get_rx_pending(struct hif_softc *scn)
|
||||||
{
|
{
|
||||||
int CE_id;
|
int CE_id;
|
||||||
|
@@ -182,20 +182,6 @@ hif_dummy_claim_device(struct hif_softc *hif_sc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* hif_dummy_bus_pkt_dl_len_set()- dummy call
|
|
||||||
* @sc: context
|
|
||||||
* @pkt_download_len: download length
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
void hif_dummy_bus_pkt_dl_len_set(void *sc,
|
|
||||||
u_int32_t pkt_download_len)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hif_dummy_cancel_deferred_target_sleep - dummy call
|
* hif_dummy_cancel_deferred_target_sleep - dummy call
|
||||||
* @hif_sc: hif context
|
* @hif_sc: hif context
|
||||||
|
@@ -42,8 +42,6 @@ QDF_STATUS hif_dummy_get_config_item(struct hif_softc *hif_sc,
|
|||||||
int opcode, void *config, uint32_t config_len);
|
int opcode, void *config, uint32_t config_len);
|
||||||
void hif_dummy_set_mailbox_swap(struct hif_softc *hif_sc);
|
void hif_dummy_set_mailbox_swap(struct hif_softc *hif_sc);
|
||||||
void hif_dummy_claim_device(struct hif_softc *hif_sc);
|
void hif_dummy_claim_device(struct hif_softc *hif_sc);
|
||||||
void hif_dummy_bus_pkt_dl_len_set(void *sc,
|
|
||||||
u_int32_t pkt_download_len);
|
|
||||||
void hif_dummy_cancel_deferred_target_sleep(struct hif_softc *hif_sc);
|
void hif_dummy_cancel_deferred_target_sleep(struct hif_softc *hif_sc);
|
||||||
void hif_dummy_irq_enable(struct hif_softc *hif_sc, int irq_id);
|
void hif_dummy_irq_enable(struct hif_softc *hif_sc, int irq_id);
|
||||||
void hif_dummy_irq_disable(struct hif_softc *hif_sc, int irq_id);
|
void hif_dummy_irq_disable(struct hif_softc *hif_sc, int irq_id);
|
||||||
|
@@ -250,13 +250,6 @@ void hif_stop(struct hif_opaque_softc *hif_ctx)
|
|||||||
hif_sc->bus_ops.hif_stop(hif_sc);
|
hif_sc->bus_ops.hif_stop(hif_sc);
|
||||||
}
|
}
|
||||||
|
|
||||||
void hif_bus_pkt_dl_len_set(struct hif_opaque_softc *hif_ctx,
|
|
||||||
u_int32_t pkt_download_len)
|
|
||||||
{
|
|
||||||
struct hif_softc *hif_sc = HIF_GET_SOFTC(hif_ctx);
|
|
||||||
hif_sc->bus_ops.hif_bus_pkt_dl_len_set(hif_sc, pkt_download_len);
|
|
||||||
}
|
|
||||||
|
|
||||||
void hif_cancel_deferred_target_sleep(struct hif_softc *hif_sc)
|
void hif_cancel_deferred_target_sleep(struct hif_softc *hif_sc)
|
||||||
{
|
{
|
||||||
return hif_sc->bus_ops.hif_cancel_deferred_target_sleep(hif_sc);
|
return hif_sc->bus_ops.hif_cancel_deferred_target_sleep(hif_sc);
|
||||||
|
@@ -57,8 +57,6 @@ struct hif_bus_ops {
|
|||||||
void (*hif_claim_device)(struct hif_softc *hif_sc);
|
void (*hif_claim_device)(struct hif_softc *hif_sc);
|
||||||
void (*hif_shutdown_device)(struct hif_softc *hif_sc);
|
void (*hif_shutdown_device)(struct hif_softc *hif_sc);
|
||||||
void (*hif_stop)(struct hif_softc *hif_sc);
|
void (*hif_stop)(struct hif_softc *hif_sc);
|
||||||
void (*hif_bus_pkt_dl_len_set)(void *hif_sc,
|
|
||||||
u_int32_t pkt_download_len);
|
|
||||||
void (*hif_cancel_deferred_target_sleep)(struct hif_softc *hif_sc);
|
void (*hif_cancel_deferred_target_sleep)(struct hif_softc *hif_sc);
|
||||||
void (*hif_irq_disable)(struct hif_softc *hif_sc, int ce_id);
|
void (*hif_irq_disable)(struct hif_softc *hif_sc, int ce_id);
|
||||||
void (*hif_irq_enable)(struct hif_softc *hif_sc, int ce_id);
|
void (*hif_irq_enable)(struct hif_softc *hif_sc, int ce_id);
|
||||||
|
@@ -53,7 +53,6 @@ QDF_STATUS hif_initialize_ahb_ops(struct hif_bus_ops *bus_ops)
|
|||||||
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
||||||
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
||||||
bus_ops->hif_stop = &hif_ce_stop;
|
bus_ops->hif_stop = &hif_ce_stop;
|
||||||
bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set;
|
|
||||||
bus_ops->hif_cancel_deferred_target_sleep =
|
bus_ops->hif_cancel_deferred_target_sleep =
|
||||||
&hif_dummy_cancel_deferred_target_sleep;
|
&hif_dummy_cancel_deferred_target_sleep;
|
||||||
bus_ops->hif_irq_disable = &hif_ahb_irq_disable;
|
bus_ops->hif_irq_disable = &hif_ahb_irq_disable;
|
||||||
|
@@ -69,7 +69,6 @@ QDF_STATUS hif_initialize_pci_ops(struct hif_softc *hif_sc)
|
|||||||
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
||||||
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
||||||
bus_ops->hif_stop = &hif_ce_stop;
|
bus_ops->hif_stop = &hif_ce_stop;
|
||||||
bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set;
|
|
||||||
bus_ops->hif_cancel_deferred_target_sleep =
|
bus_ops->hif_cancel_deferred_target_sleep =
|
||||||
&hif_pci_cancel_deferred_target_sleep;
|
&hif_pci_cancel_deferred_target_sleep;
|
||||||
bus_ops->hif_irq_disable = &hif_pci_irq_disable;
|
bus_ops->hif_irq_disable = &hif_pci_irq_disable;
|
||||||
|
@@ -52,7 +52,6 @@ QDF_STATUS hif_initialize_sdio_ops(struct hif_softc *hif_sc)
|
|||||||
bus_ops->hif_claim_device = &hif_sdio_claim_device;
|
bus_ops->hif_claim_device = &hif_sdio_claim_device;
|
||||||
bus_ops->hif_shutdown_device = &hif_sdio_shutdown;
|
bus_ops->hif_shutdown_device = &hif_sdio_shutdown;
|
||||||
bus_ops->hif_stop = &hif_sdio_stop;
|
bus_ops->hif_stop = &hif_sdio_stop;
|
||||||
bus_ops->hif_bus_pkt_dl_len_set = &hif_dummy_bus_pkt_dl_len_set;
|
|
||||||
bus_ops->hif_cancel_deferred_target_sleep =
|
bus_ops->hif_cancel_deferred_target_sleep =
|
||||||
&hif_dummy_cancel_deferred_target_sleep;
|
&hif_dummy_cancel_deferred_target_sleep;
|
||||||
bus_ops->hif_irq_disable = &hif_dummy_irq_disable;
|
bus_ops->hif_irq_disable = &hif_dummy_irq_disable;
|
||||||
|
@@ -60,7 +60,6 @@ QDF_STATUS hif_initialize_snoc_ops(struct hif_bus_ops *bus_ops)
|
|||||||
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
bus_ops->hif_claim_device = &hif_dummy_claim_device;
|
||||||
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
bus_ops->hif_shutdown_device = &hif_ce_stop;
|
||||||
bus_ops->hif_stop = &hif_ce_stop;
|
bus_ops->hif_stop = &hif_ce_stop;
|
||||||
bus_ops->hif_bus_pkt_dl_len_set = &ce_pkt_dl_len_set;
|
|
||||||
bus_ops->hif_cancel_deferred_target_sleep =
|
bus_ops->hif_cancel_deferred_target_sleep =
|
||||||
&hif_dummy_cancel_deferred_target_sleep;
|
&hif_dummy_cancel_deferred_target_sleep;
|
||||||
bus_ops->hif_irq_disable = &hif_snoc_irq_disable;
|
bus_ops->hif_irq_disable = &hif_snoc_irq_disable;
|
||||||
|
@@ -942,28 +942,16 @@ int hif_send_single(struct hif_opaque_softc *osc, qdf_nbuf_t msdu, uint32_t
|
|||||||
* @msdu : array of msdus to be sent
|
* @msdu : array of msdus to be sent
|
||||||
* @num_msdus : number of msdus in an array
|
* @num_msdus : number of msdus in an array
|
||||||
* @transfer_id: transfer id
|
* @transfer_id: transfer id
|
||||||
|
* @download_len: download length
|
||||||
*
|
*
|
||||||
* Return: No. of packets that could be sent
|
* Return: No. of packets that could be sent
|
||||||
*/
|
*/
|
||||||
int hif_send_fast(struct hif_opaque_softc *osc, qdf_nbuf_t *nbuf_arr,
|
int hif_send_fast(struct hif_opaque_softc *osc, qdf_nbuf_t nbuf,
|
||||||
uint32_t num_msdus, uint32_t transfer_id)
|
uint32_t transfer_id, uint32_t download_len)
|
||||||
{
|
{
|
||||||
void *ce_tx_hdl = hif_get_ce_handle(osc, CE_HTT_TX_CE);
|
void *ce_tx_hdl = hif_get_ce_handle(osc, CE_HTT_TX_CE);
|
||||||
return ce_send_fast((struct CE_handle *)ce_tx_hdl, nbuf_arr, num_msdus,
|
return ce_send_fast((struct CE_handle *)ce_tx_hdl, nbuf,
|
||||||
transfer_id);
|
transfer_id, download_len);
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* hif_pkt_dl_len_set() - API to access hif specific function
|
|
||||||
* ce_pkt_dl_len_set.
|
|
||||||
* @osc: HIF Context
|
|
||||||
* @pkt_download_len: download length
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
void hif_pkt_dl_len_set(void *hif_sc, unsigned int pkt_download_len)
|
|
||||||
{
|
|
||||||
ce_pkt_dl_len_set(hif_sc, pkt_download_len);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -3996,16 +3996,3 @@ void hif_runtime_lock_deinit(struct hif_opaque_softc *hif_ctx,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#endif /* FEATURE_RUNTIME_PM */
|
#endif /* FEATURE_RUNTIME_PM */
|
||||||
|
|
||||||
/**
|
|
||||||
* hif_pci_bus_pkt_dl_len_set() set the HTT packet download length
|
|
||||||
* @sc: context
|
|
||||||
* @pkt_download_len: download length
|
|
||||||
*
|
|
||||||
* Return: void
|
|
||||||
*/
|
|
||||||
void hif_pci_bus_pkt_dl_len_set(struct hif_softc *sc,
|
|
||||||
u_int32_t pkt_download_len)
|
|
||||||
{
|
|
||||||
ce_pkt_dl_len_set(sc, pkt_download_len);
|
|
||||||
}
|
|
||||||
|
@@ -156,7 +156,8 @@ struct qdf_nbuf_cb {
|
|||||||
num:1,
|
num:1,
|
||||||
flag_chfrag_start:1,
|
flag_chfrag_start:1,
|
||||||
flag_chfrag_end:1,
|
flag_chfrag_end:1,
|
||||||
reserved:3;
|
flag_ext_header:1,
|
||||||
|
reserved:2;
|
||||||
} bits;
|
} bits;
|
||||||
uint8_t u8;
|
uint8_t u8;
|
||||||
} flags;
|
} flags;
|
||||||
@@ -252,6 +253,9 @@ struct qdf_nbuf_cb {
|
|||||||
#define QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_CHFRAG_END(skb) \
|
#define QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_CHFRAG_END(skb) \
|
||||||
(((struct qdf_nbuf_cb *) \
|
(((struct qdf_nbuf_cb *) \
|
||||||
((skb)->cb))->u.tx.extra_frag.flags.bits.flag_chfrag_end)
|
((skb)->cb))->u.tx.extra_frag.flags.bits.flag_chfrag_end)
|
||||||
|
#define QDF_NBUF_CB_TX_EXTRA_FRAG_FLAGS_EXT_HEADER(skb) \
|
||||||
|
(((struct qdf_nbuf_cb *) \
|
||||||
|
((skb)->cb))->u.tx.extra_frag.flags.bits.flag_ext_header)
|
||||||
#define QDF_NBUF_CB_TX_EXTRA_FRAG_WORDSTR_EFRAG(skb) \
|
#define QDF_NBUF_CB_TX_EXTRA_FRAG_WORDSTR_EFRAG(skb) \
|
||||||
(((struct qdf_nbuf_cb *) \
|
(((struct qdf_nbuf_cb *) \
|
||||||
((skb)->cb))->u.tx.extra_frag.flags.bits.flag_efrag)
|
((skb)->cb))->u.tx.extra_frag.flags.bits.flag_efrag)
|
||||||
|
Reference in New Issue
Block a user