qcacmn: Add alt_pipe in struct wlan_ipa_iface_context
With IPA_WDI3_TX_TWO_PIPES=y, add support to setup and cleanup alt_pipe on a per interface basis in struct wlan_ipa_iface_context. At the same time, add support to dump alt_pipe value in wlan_ipa_dump_iface_context() for debug purposes. Change-Id: If618e56036c434cdfe7989d1b4197ed54e3b1147 CRs-Fixed: 3599454
This commit is contained in:

committed by
Rahul Choudhary

parent
937e92c6c5
commit
449758b4de
@@ -378,6 +378,7 @@ struct wlan_ipa_priv;
|
||||
* @stats: Interface stats
|
||||
* @bssid: BSSID. valid only for sta iface ctx
|
||||
* @is_authenticated: is peer authenticated
|
||||
* @alt_pipe: Indicate whether the interface uses alternate TX pipe
|
||||
*/
|
||||
struct wlan_ipa_iface_context {
|
||||
struct wlan_ipa_priv *ipa_ctx;
|
||||
@@ -397,6 +398,9 @@ struct wlan_ipa_iface_context {
|
||||
struct wlan_ipa_iface_stats stats;
|
||||
struct qdf_mac_addr bssid;
|
||||
uint8_t is_authenticated;
|
||||
#ifdef IPA_WDI3_TX_TWO_PIPES
|
||||
bool alt_pipe;
|
||||
#endif
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -2077,6 +2077,45 @@ static int wlan_ipa_get_ifaceid(struct wlan_ipa_priv *ipa_ctx,
|
||||
return i;
|
||||
}
|
||||
|
||||
#ifdef IPA_WDI3_TX_TWO_PIPES
|
||||
#define WLAN_IPA_SESSION_ID_SHIFT 1
|
||||
static uint8_t wlan_ipa_set_session_id(uint8_t session_id, bool is_2g_iface)
|
||||
{
|
||||
return (session_id << WLAN_IPA_SESSION_ID_SHIFT) | is_2g_iface;
|
||||
}
|
||||
|
||||
static void
|
||||
wlan_ipa_setup_iface_alt_pipe(struct wlan_ipa_iface_context *iface_context,
|
||||
bool alt_pipe)
|
||||
{
|
||||
iface_context->alt_pipe = alt_pipe;
|
||||
}
|
||||
|
||||
static void
|
||||
wlan_ipa_cleanup_iface_alt_pipe(struct wlan_ipa_iface_context *iface_context)
|
||||
{
|
||||
iface_context->alt_pipe = false;
|
||||
}
|
||||
|
||||
#else
|
||||
static uint8_t wlan_ipa_set_session_id(uint8_t session_id, bool is_2g_iface)
|
||||
{
|
||||
return session_id;
|
||||
}
|
||||
|
||||
static void
|
||||
wlan_ipa_setup_iface_alt_pipe(struct wlan_ipa_iface_context *iface_context,
|
||||
bool alt_pipe)
|
||||
{
|
||||
}
|
||||
|
||||
static void
|
||||
wlan_ipa_cleanup_iface_alt_pipe(struct wlan_ipa_iface_context *iface_context)
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_ipa_cleanup_iface() - Cleanup IPA on a given interface
|
||||
* @iface_context: interface-specific IPA context
|
||||
@@ -2128,6 +2167,7 @@ static void wlan_ipa_cleanup_iface(struct wlan_ipa_iface_context *iface_context,
|
||||
iface_context->device_mode = QDF_MAX_NO_OF_MODE;
|
||||
iface_context->session_id = WLAN_IPA_MAX_SESSION;
|
||||
qdf_mem_set(iface_context->mac_addr, QDF_MAC_ADDR_SIZE, 0);
|
||||
wlan_ipa_cleanup_iface_alt_pipe(iface_context);
|
||||
qdf_spin_unlock_bh(&iface_context->interface_lock);
|
||||
iface_context->ifa_address = 0;
|
||||
qdf_zero_macaddr(&iface_context->bssid);
|
||||
@@ -2218,19 +2258,6 @@ static void wlan_ipa_nbuf_cb(qdf_nbuf_t skb)
|
||||
|
||||
#endif /* QCA_LL_TX_FLOW_CONTROL_V2 */
|
||||
|
||||
#ifdef IPA_WDI3_TX_TWO_PIPES
|
||||
#define WLAN_IPA_SESSION_ID_SHIFT 1
|
||||
static uint8_t wlan_ipa_set_session_id(uint8_t session_id, bool is_2g_iface)
|
||||
{
|
||||
return (session_id << WLAN_IPA_SESSION_ID_SHIFT) | is_2g_iface;
|
||||
}
|
||||
#else
|
||||
static uint8_t wlan_ipa_set_session_id(uint8_t session_id, bool is_2g_iface)
|
||||
{
|
||||
return session_id;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_ipa_setup_iface() - Setup IPA on a given interface
|
||||
* @ipa_ctx: IPA IPA global context
|
||||
@@ -2328,6 +2355,7 @@ static QDF_STATUS wlan_ipa_setup_iface(struct wlan_ipa_priv *ipa_ctx,
|
||||
iface_context->device_mode = device_mode;
|
||||
iface_context->session_id = session_id;
|
||||
qdf_mem_copy(iface_context->mac_addr, mac_addr, QDF_MAC_ADDR_SIZE);
|
||||
wlan_ipa_setup_iface_alt_pipe(iface_context, is_2g_iface);
|
||||
qdf_spin_unlock_bh(&iface_context->interface_lock);
|
||||
|
||||
status = cdp_ipa_setup_iface(ipa_ctx->dp_soc, net_dev->name,
|
||||
|
@@ -406,6 +406,19 @@ static void wlan_ipa_dump_sys_pipe(struct wlan_ipa_priv *ipa_ctx)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef IPA_WDI3_TX_TWO_PIPES
|
||||
static void
|
||||
wlan_ipa_dump_iface_context_alt_pipe(struct wlan_ipa_iface_context *iface)
|
||||
{
|
||||
ipa_info("\talt_pipe: %d\n", iface->alt_pipe);
|
||||
}
|
||||
#else
|
||||
static void
|
||||
wlan_ipa_dump_iface_context_alt_pipe(struct wlan_ipa_iface_context *iface)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* wlan_ipa_dump_iface_context() - Dump IPA interface context structure
|
||||
* @ipa_ctx: IPA private context structure
|
||||
@@ -442,6 +455,7 @@ static void wlan_ipa_dump_iface_context(struct wlan_ipa_priv *ipa_ctx)
|
||||
iface_context->iface_id,
|
||||
&iface_context->interface_lock,
|
||||
iface_context->ifa_address);
|
||||
wlan_ipa_dump_iface_context_alt_pipe(iface_context);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user