net: qrtr: mhi_dev: Handle mhi register error case

Handle -EEXIST error case while register state callback
with mhi device. If channel is open during registration
no callback will issue instead mhi stack return -EEXIST
to notify the client. Further state change notification
will be informed via registered callback.

commit net: qrtr: mhi_dev: Handle mhi register error case
(f1eeca90b18b7).

Change-Id: Icf60de35d23393a0808ef90058c1108e950d02b9
Signed-off-by: Arun Prakash <app@codeaurora.org>
Signed-off-by: Manoharan Vijaya Raghavan <mraghava@codeaurora.org>
This commit is contained in:
Arun Prakash 2020-05-29 20:16:27 +05:30 • committed by Gerrit - the friendly Code Review server
commit 2c04602122

View file

@ -202,6 +202,7 @@ static int qrtr_mhi_dev_probe(struct platform_device *pdev)
struct qrtr_mhi_dev_ep *qep;
struct device_node *node;
int rc;
struct mhi_dev_client_cb_data cb_data;
qep = devm_kzalloc(&pdev->dev, sizeof(*qep), GFP_KERNEL);
if (!qep)
@ -228,8 +229,21 @@ static int qrtr_mhi_dev_probe(struct platform_device *pdev)
*/
rc = mhi_register_state_cb(qrtr_mhi_dev_state_cb, qep,
QRTR_MHI_DEV_OUT);
if (rc)
if (rc == -EEXIST) {
/**
* MHI stack will return -EEXIST if mhi channel is already
* opend by the host and will not invoke reqistered callback.
* But future state change notification will inform through
* registered callback.
*/
complete_all(&qep->out_tre);
cb_data.user_data = (void *)qep;
cb_data.channel = QRTR_MHI_DEV_OUT;
cb_data.ctrl_info = MHI_STATE_CONNECTED;
qrtr_mhi_dev_state_cb(&cb_data);
} else if (rc) {
return rc;
}
return 0;
}