{
        struct bfi_enet_enable_req *admin_req =
                ðport->bfi_enet_cmd.admin_req;
-       struct bfi_enet_rsp *rsp = (struct bfi_enet_rsp *)msghdr;
+       struct bfi_enet_rsp *rsp =
+               container_of(msghdr, struct bfi_enet_rsp, mh);
 
        switch (admin_req->enable) {
        case BNA_STATUS_T_ENABLED:
 {
        struct bfi_enet_diag_lb_req *diag_lb_req =
                ðport->bfi_enet_cmd.lpbk_req;
-       struct bfi_enet_rsp *rsp = (struct bfi_enet_rsp *)msghdr;
+       struct bfi_enet_rsp *rsp =
+               container_of(msghdr, struct bfi_enet_rsp, mh);
 
        switch (diag_lb_req->enable) {
        case BNA_STATUS_T_ENABLED:
 bna_bfi_attr_get_rsp(struct bna_ioceth *ioceth,
                        struct bfi_msgq_mhdr *msghdr)
 {
-       struct bfi_enet_attr_rsp *rsp = (struct bfi_enet_attr_rsp *)msghdr;
+       struct bfi_enet_attr_rsp *rsp =
+               container_of(msghdr, struct bfi_enet_attr_rsp, mh);
 
        /**
         * Store only if not set earlier, since BNAD can override the HW
 
                        struct bfi_msgq_mhdr *msghdr)
 {
        struct bfi_enet_rsp *rsp =
-               (struct bfi_enet_rsp *)msghdr;
+               container_of(msghdr, struct bfi_enet_rsp, mh);
 
        if (rsp->error) {
                /* Clear ucast from cache */
        struct bfi_enet_mcast_add_req *req =
                &rxf->bfi_enet_cmd.mcast_add_req;
        struct bfi_enet_mcast_add_rsp *rsp =
-               (struct bfi_enet_mcast_add_rsp *)msghdr;
+               container_of(msghdr, struct bfi_enet_mcast_add_rsp, mh);
 
        bna_rxf_mchandle_attach(rxf, (u8 *)&req->mac_addr,
                ntohs(rsp->handle));