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
Tento commit je obsažen v:
Jia Ding
2023-08-18 14:38:46 +08:00
odevzdal Rahul Choudhary
rodič 937e92c6c5
revize 449758b4de
3 změnil soubory, kde provedl 59 přidání a 13 odebrání

Zobrazit soubor

@@ -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
};
/**

Zobrazit soubor

@@ -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,

Zobrazit soubor

@@ -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);
}
}