]> git.droids-corp.org - dpdk.git/commitdiff
net/sfc/base: implement proxy auth MCDI event handling
authorGautam Dawar <gdawar@solarflare.com>
Mon, 10 Jun 2019 07:38:40 +0000 (08:38 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Thu, 20 Jun 2019 21:42:04 +0000 (23:42 +0200)
Add the capability to receive MCDI proxy event from firmware and
invoke the client driver registered function to handle it.

Signed-off-by: Gautam Dawar <gdawar@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
drivers/net/sfc/base/ef10_ev.c
drivers/net/sfc/base/efx.h
drivers/net/sfc/base/efx_check.h
drivers/net/sfc/base/efx_mcdi.c
drivers/net/sfc/base/efx_mcdi.h

index 99cae3fa3b0ca914842096c9cd99fe8e6005cb03..8cabb4e9282d832c67a6115dfc73baae410a0a70 100644 (file)
@@ -1227,6 +1227,13 @@ ef10_ev_mcdi(
                break;
 #endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
 
+#if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER
+       case MCDI_EVENT_CODE_PROXY_REQUEST:
+               efx_mcdi_ev_proxy_request(enp,
+                       MCDI_EV_FIELD(eqp, PROXY_REQUEST_BUFF_INDEX));
+               break;
+#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
+
        case MCDI_EVENT_CODE_LINKCHANGE: {
                efx_link_mode_t link_mode;
 
index 8a3eb17a6c3ebea23806621e5fa5bdd59616b6aa..97c4e62340401c51c38d6780053c2b52f3937d69 100644 (file)
@@ -243,6 +243,9 @@ typedef struct efx_mcdi_transport_s {
 #if EFSYS_OPT_MCDI_PROXY_AUTH
        void            (*emt_ev_proxy_response)(void *, uint32_t, efx_rc_t);
 #endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
+#if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER
+       void            (*emt_ev_proxy_request)(void *, uint32_t);
+#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
 } efx_mcdi_transport_t;
 
 extern __checkReturn   efx_rc_t
index 85edaef7d7f82ba4b1499202cccf8dfa6a822039..06983dc593002991fd4be4a62d5cef15daac2ec4 100644 (file)
 # endif
 #endif /* EFSYS_OPT_MCDI_LOGGING */
 
+#if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER
+/* Support MCDI proxy authorization (server) */
+# if !EFSYS_OPT_MCDI_PROXY_AUTH
+#  error "MCDI_PROXY_AUTH_SERVER requires MCDI_PROXY_AUTH"
+# endif
+#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
+
 #if EFSYS_OPT_MCDI_PROXY_AUTH
-/* Support MCDI proxy authorization */
+/* Support MCDI proxy authorization (client) */
 # if !EFSYS_OPT_MCDI
 #  error "MCDI_PROXY_AUTH requires MCDI"
 # endif
index 584fd4d2f7d6e555d8fa8f9f78a2cab6f987641a..325c2e44dd6c406f51d5fc946f5d1ec101ad1d9a 100644 (file)
@@ -845,6 +845,18 @@ efx_mcdi_ev_proxy_response(
 }
 #endif /* EFSYS_OPT_MCDI_PROXY_AUTH */
 
+#if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER
+                       void
+efx_mcdi_ev_proxy_request(
+       __in            efx_nic_t *enp,
+       __in            unsigned int index)
+{
+       const efx_mcdi_transport_t *emtp = enp->en_mcdi.em_emtp;
+
+       if (emtp->emt_ev_proxy_request != NULL)
+               emtp->emt_ev_proxy_request(emtp->emt_context, index);
+}
+#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
                        void
 efx_mcdi_ev_death(
        __in            efx_nic_t *enp,
index a9e0255371535eaaab081e6ed8afee782f3a4fd1..56c0ab105012f4e43ae44172985834c00a1ca7b1 100644 (file)
@@ -87,6 +87,13 @@ efx_mcdi_ev_proxy_response(
        __in            unsigned int status);
 #endif
 
+#if EFSYS_OPT_MCDI_PROXY_AUTH_SERVER
+extern                 void
+efx_mcdi_ev_proxy_request(
+       __in            efx_nic_t *enp,
+       __in            unsigned int index);
+#endif /* EFSYS_OPT_MCDI_PROXY_AUTH_SERVER */
+
 extern                 void
 efx_mcdi_ev_death(
        __in            efx_nic_t *enp,