Declare local pointer to the drm_dp_link_address_ack_reply struct
instead of constantly dereferencing it through the union in
txmsg->reply. Then, invert the order of conditionals so we don't have to
do the bulk of the work inside them, and can wrap lines even less. Then
finally, rearrange variable declarations a bit.

Cc: Juston Li <juston...@intel.com>
Cc: Imre Deak <imre.d...@intel.com>
Cc: Ville Syrjälä <ville.syrj...@linux.intel.com>
Cc: Harry Wentland <hwent...@amd.com>
Cc: Daniel Vetter <daniel.vet...@ffwll.ch>
Signed-off-by: Lyude Paul <ly...@redhat.com>
---
 drivers/gpu/drm/drm_dp_mst_topology.c | 42 +++++++++++++++------------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/drivers/gpu/drm/drm_dp_mst_topology.c 
b/drivers/gpu/drm/drm_dp_mst_topology.c
index 2f88cc173500..d1610434a0cb 100644
--- a/drivers/gpu/drm/drm_dp_mst_topology.c
+++ b/drivers/gpu/drm/drm_dp_mst_topology.c
@@ -2398,9 +2398,9 @@ drm_dp_dump_link_address(struct 
drm_dp_link_address_ack_reply *reply)
 static void drm_dp_send_link_address(struct drm_dp_mst_topology_mgr *mgr,
                                     struct drm_dp_mst_branch *mstb)
 {
-       int len;
        struct drm_dp_sideband_msg_tx *txmsg;
-       int ret;
+       struct drm_dp_link_address_ack_reply *reply;
+       int i, len, ret;
 
        txmsg = kzalloc(sizeof(*txmsg), GFP_KERNEL);
        if (!txmsg)
@@ -2412,28 +2412,32 @@ static void drm_dp_send_link_address(struct 
drm_dp_mst_topology_mgr *mgr,
        mstb->link_address_sent = true;
        drm_dp_queue_down_tx(mgr, txmsg);
 
+       /* FIXME: Actually do some real error handling here */
        ret = drm_dp_mst_wait_tx_reply(mstb, txmsg);
-       if (ret > 0) {
-               int i;
+       if (ret <= 0) {
+               DRM_ERROR("Sending link address failed with %d\n", ret);
+               goto out;
+       }
+       if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) {
+               DRM_ERROR("link address NAK received\n");
+               ret = -EIO;
+               goto out;
+       }
 
-               if (txmsg->reply.reply_type == DP_SIDEBAND_REPLY_NAK) {
-                       DRM_DEBUG_KMS("link address nak received\n");
-               } else {
-                       DRM_DEBUG_KMS("link address reply: %d\n", 
txmsg->reply.u.link_addr.nports);
-                       drm_dp_dump_link_address(&txmsg->reply.u.link_addr);
+       reply = &txmsg->reply.u.link_addr;
+       DRM_DEBUG_KMS("link address reply: %d\n", reply->nports);
+       drm_dp_dump_link_address(reply);
 
-                       drm_dp_check_mstb_guid(mstb, 
txmsg->reply.u.link_addr.guid);
+       drm_dp_check_mstb_guid(mstb, reply->guid);
 
-                       for (i = 0; i < txmsg->reply.u.link_addr.nports; i++) {
-                               drm_dp_add_port(mstb, mgr->dev, 
&txmsg->reply.u.link_addr.ports[i]);
-                       }
-                       drm_kms_helper_hotplug_event(mgr->dev);
-               }
-       } else {
-               mstb->link_address_sent = false;
-               DRM_DEBUG_KMS("link address failed %d\n", ret);
-       }
+       for (i = 0; i < reply->nports; i++)
+               drm_dp_add_port(mstb, mgr->dev, &reply->ports[i]);
+
+       drm_kms_helper_hotplug_event(mgr->dev);
 
+out:
+       if (ret <= 0)
+               mstb->link_address_sent = false;
        kfree(txmsg);
 }
 
-- 
2.21.0

Reply via email to