mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-13 08:07:32 -04:00
rmnet_ctl: remove dependencies
Removes hard dependendencies between rmnet_core and rmnet_ctl. Change-Id: I9931380fc6406eec5842a824181a0bacbb6ce73a Acked-by: Weiyi Chen <weiyic@qti.qualcomm.com> Signed-off-by: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
This commit is contained in:
parent
2724751ae6
commit
e87877cb0c
4 changed files with 59 additions and 48 deletions
|
|
@ -4,6 +4,7 @@
|
|||
*/
|
||||
|
||||
#include <net/pkt_sched.h>
|
||||
#include <linux/module.h>
|
||||
#include "rmnet_ctl.h"
|
||||
#include "dfc_defs.h"
|
||||
#include "rmnet_qmi.h"
|
||||
|
|
@ -127,6 +128,9 @@ static struct dfc_qmi_data __rcu *qmap_dfc_data;
|
|||
static atomic_t qmap_txid;
|
||||
static void *rmnet_ctl_handle;
|
||||
|
||||
extern struct rmnet_ctl_client_if rmnet_ctl_if;
|
||||
static struct rmnet_ctl_client_if *rmnet_ctl;
|
||||
|
||||
static void dfc_qmap_send_end_marker_cnf(struct qos_info *qos,
|
||||
u8 bearer_id, u16 seq, u32 tx_id);
|
||||
|
||||
|
|
@ -134,7 +138,8 @@ static void dfc_qmap_send_cmd(struct sk_buff *skb)
|
|||
{
|
||||
trace_dfc_qmap(skb->data, skb->len, false);
|
||||
|
||||
if (rmnet_ctl_send_client(rmnet_ctl_handle, skb)) {
|
||||
if (unlikely(!rmnet_ctl || !rmnet_ctl->send) ||
|
||||
rmnet_ctl->send(rmnet_ctl_handle, skb)) {
|
||||
pr_err("Failed to send to rmnet ctl\n");
|
||||
kfree_skb(skb);
|
||||
}
|
||||
|
|
@ -150,7 +155,9 @@ static void dfc_qmap_send_inband_ack(struct dfc_qmi_data *dfc,
|
|||
skb->protocol = htons(ETH_P_MAP);
|
||||
skb->dev = rmnet_get_real_dev(dfc->rmnet_port);
|
||||
|
||||
rmnet_ctl_log_debug("TXI", skb->data, skb->len);
|
||||
if (likely(rmnet_ctl && rmnet_ctl->log))
|
||||
rmnet_ctl->log(RMNET_CTL_LOG_DEBUG, "TXI", 0,
|
||||
skb->data, skb->len);
|
||||
trace_dfc_qmap(skb->data, skb->len, false);
|
||||
dev_queue_xmit(skb);
|
||||
}
|
||||
|
|
@ -446,7 +453,9 @@ static void dfc_qmap_send_end_marker_cnf(struct qos_info *qos,
|
|||
skb->dev = qos->real_dev;
|
||||
|
||||
/* This cmd needs to be sent in-band */
|
||||
rmnet_ctl_log_info("TXI", skb->data, skb->len);
|
||||
if (likely(rmnet_ctl && rmnet_ctl->log))
|
||||
rmnet_ctl->log(RMNET_CTL_LOG_INFO, "TXI", 0,
|
||||
skb->data, skb->len);
|
||||
trace_dfc_qmap(skb->data, skb->len, false);
|
||||
rmnet_map_tx_qmap_cmd(skb);
|
||||
}
|
||||
|
|
@ -490,7 +499,16 @@ int dfc_qmap_client_init(void *port, int index, struct svc_info *psvc,
|
|||
|
||||
atomic_set(&qmap_txid, 0);
|
||||
|
||||
rmnet_ctl_handle = rmnet_ctl_register_client(&cb);
|
||||
if (!rmnet_ctl)
|
||||
rmnet_ctl = symbol_get(rmnet_ctl_if);
|
||||
if (!rmnet_ctl) {
|
||||
pr_err("rmnet_ctl module not loaded\n");
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (rmnet_ctl->reg)
|
||||
rmnet_ctl_handle = rmnet_ctl->reg(&cb);
|
||||
|
||||
if (!rmnet_ctl_handle)
|
||||
pr_err("Failed to register with rmnet ctl\n");
|
||||
|
||||
|
|
@ -501,6 +519,7 @@ int dfc_qmap_client_init(void *port, int index, struct svc_info *psvc,
|
|||
|
||||
dfc_qmap_send_config(data);
|
||||
|
||||
out:
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
@ -515,7 +534,9 @@ void dfc_qmap_client_exit(void *dfc_data)
|
|||
|
||||
trace_dfc_client_state_down(data->index, 0);
|
||||
|
||||
rmnet_ctl_unregister_client(rmnet_ctl_handle);
|
||||
if (rmnet_ctl && rmnet_ctl->dereg)
|
||||
rmnet_ctl->dereg(rmnet_ctl_handle);
|
||||
rmnet_ctl_handle = NULL;
|
||||
|
||||
WRITE_ONCE(data->restart_state, 1);
|
||||
RCU_INIT_POINTER(qmap_dfc_data, NULL);
|
||||
|
|
@ -523,5 +544,10 @@ void dfc_qmap_client_exit(void *dfc_data)
|
|||
|
||||
kfree(data);
|
||||
|
||||
if (rmnet_ctl) {
|
||||
symbol_put(rmnet_ctl_if);
|
||||
rmnet_ctl = NULL;
|
||||
}
|
||||
|
||||
pr_info("DFC QMAP exit\n");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -10,8 +10,6 @@
|
|||
|
||||
#include <linux/skbuff.h>
|
||||
|
||||
#define CONFIG_RMNET_CTL 1
|
||||
|
||||
enum rmnet_ctl_log_lvl {
|
||||
RMNET_CTL_LOG_CRIT,
|
||||
RMNET_CTL_LOG_ERR,
|
||||
|
|
@ -19,50 +17,16 @@ enum rmnet_ctl_log_lvl {
|
|||
RMNET_CTL_LOG_DEBUG,
|
||||
};
|
||||
|
||||
#define rmnet_ctl_log_err(msg, rc, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_ERR, msg, rc, data, len)
|
||||
|
||||
#define rmnet_ctl_log_info(msg, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_INFO, msg, 0, data, len)
|
||||
|
||||
#define rmnet_ctl_log_debug(msg, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_DEBUG, msg, 0, data, len)
|
||||
|
||||
struct rmnet_ctl_client_hooks {
|
||||
void (*ctl_dl_client_hook)(struct sk_buff *skb);
|
||||
};
|
||||
|
||||
#ifdef CONFIG_RMNET_CTL
|
||||
|
||||
void *rmnet_ctl_register_client(struct rmnet_ctl_client_hooks *hook);
|
||||
int rmnet_ctl_unregister_client(void *handle);
|
||||
int rmnet_ctl_send_client(void *handle, struct sk_buff *skb);
|
||||
void rmnet_ctl_log(enum rmnet_ctl_log_lvl lvl, const char *msg,
|
||||
int rc, const void *data, unsigned int len);
|
||||
|
||||
#else
|
||||
|
||||
static inline void *rmnet_ctl_register_client(
|
||||
struct rmnet_ctl_client_hooks *hook)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline int rmnet_ctl_unregister_client(void *handle)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline int rmnet_ctl_send_client(void *handle, struct sk_buff *skb)
|
||||
{
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static inline void rmnet_ctl_log(enum rmnet_ctl_log_lvl lvl, const char *msg,
|
||||
int rc, const void *data, unsigned int len)
|
||||
{
|
||||
}
|
||||
|
||||
#endif /* CONFIG_RMNET_CTL */
|
||||
struct rmnet_ctl_client_if {
|
||||
void * (*reg)(struct rmnet_ctl_client_hooks *hook);
|
||||
int (*dereg)(void *handle);
|
||||
int (*send)(void *handle, struct sk_buff *skb);
|
||||
void (*log)(enum rmnet_ctl_log_lvl lvl, const char *msg, int rc,
|
||||
const void *data, unsigned int len);
|
||||
};
|
||||
|
||||
#endif /* _RMNET_CTL_H_ */
|
||||
|
|
|
|||
|
|
@ -200,3 +200,11 @@ void rmnet_ctl_log(enum rmnet_ctl_log_lvl lvl, const char *msg,
|
|||
}
|
||||
}
|
||||
EXPORT_SYMBOL(rmnet_ctl_log);
|
||||
|
||||
struct rmnet_ctl_client_if rmnet_ctl_if = {
|
||||
.reg = rmnet_ctl_register_client,
|
||||
.dereg = rmnet_ctl_unregister_client,
|
||||
.send = rmnet_ctl_send_client,
|
||||
.log = rmnet_ctl_log,
|
||||
};
|
||||
EXPORT_SYMBOL(rmnet_ctl_if);
|
||||
|
|
|
|||
|
|
@ -9,6 +9,19 @@
|
|||
#define _RMNET_CTL_CLIENT_H_
|
||||
|
||||
#include <linux/skbuff.h>
|
||||
#include "rmnet_ctl.h"
|
||||
|
||||
void rmnet_ctl_log(enum rmnet_ctl_log_lvl lvl, const char *msg,
|
||||
int rc, const void *data, unsigned int len);
|
||||
|
||||
#define rmnet_ctl_log_err(msg, rc, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_ERR, msg, rc, data, len)
|
||||
|
||||
#define rmnet_ctl_log_info(msg, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_INFO, msg, 0, data, len)
|
||||
|
||||
#define rmnet_ctl_log_debug(msg, data, len) \
|
||||
rmnet_ctl_log(RMNET_CTL_LOG_DEBUG, msg, 0, data, len)
|
||||
|
||||
struct rmnet_ctl_stats {
|
||||
u64 rx_pkts;
|
||||
|
|
|
|||
Loading…
Reference in a new issue