======================
 
 .. kernel-doc:: net/rxrpc/af_rxrpc.c
+.. kernel-doc:: net/rxrpc/call_object.c
 .. kernel-doc:: net/rxrpc/key.c
 .. kernel-doc:: net/rxrpc/oob.c
 .. kernel-doc:: net/rxrpc/peer_object.c
 
        bool                    intr;           /* T if interruptible */
        bool                    unmarshalling_error; /* T if an unmarshalling error occurred */
        bool                    responded;      /* Got a response from the call (may be abort) */
+       u8                      security_ix;    /* Security class */
        u16                     service_id;     /* Actual service ID (after upgrade) */
        unsigned int            debug_id;       /* Trace ID */
+       u32                     enctype;        /* Security encoding type */
        u32                     operation_ID;   /* operation ID for an incoming call */
        u32                     count;          /* count for use in unmarshalling */
        union {                                 /* place to extract temporary data */
 
        if (!afs_cm_incoming_call(call))
                return -ENOTSUPP;
 
+       call->security_ix = rxrpc_kernel_query_call_security(call->rxcall,
+                                                            &call->service_id,
+                                                            &call->enctype);
+
        trace_afs_cb_call(call);
        call->work.func = call->type->work;
 
 
 u32 rxgk_kernel_query_challenge(struct sk_buff *challenge);
 int rxgk_kernel_respond_to_challenge(struct sk_buff *challenge,
                                     struct krb5_buffer *appdata);
+u8 rxrpc_kernel_query_call_security(struct rxrpc_call *call,
+                                   u16 *_service_id, u32 *_enctype);
 
 #endif /* _NET_RXRPC_H */
 
                    __field(unsigned int,               call)
                    __field(u32,                        op)
                    __field(u16,                        service_id)
+                   __field(u8,                         security_ix)
+                   __field(u32,                        enctype)
                             ),
 
            TP_fast_assign(
                    __entry->call       = call->debug_id;
                    __entry->op         = call->operation_ID;
                    __entry->service_id = call->service_id;
+                   __entry->security_ix = call->security_ix;
+                   __entry->enctype    = call->enctype;
                           ),
 
-           TP_printk("c=%08x %s",
+           TP_printk("c=%08x %s sv=%u sx=%u en=%u",
                      __entry->call,
                      __entry->service_id == 2501 ?
                      __print_symbolic(__entry->op, yfs_cm_operations) :
-                     __print_symbolic(__entry->op, afs_cm_operations))
+                     __print_symbolic(__entry->op, afs_cm_operations),
+                     __entry->service_id,
+                     __entry->security_ix,
+                     __entry->enctype)
            );
 
 TRACE_EVENT(afs_call,
 
        u32                     call_id;        /* call ID on connection  */
        u32                     cid;            /* connection ID plus channel index */
        u32                     security_level; /* Security level selected */
+       u32                     security_enctype; /* Security-specific encoding type (or 0) */
        int                     debug_id;       /* debug ID for printks */
        unsigned short          rx_pkt_offset;  /* Current recvmsg packet offset */
        unsigned short          rx_pkt_len;     /* Current recvmsg packet len */
 
        atomic_dec(&rxnet->nr_calls);
        wait_var_event(&rxnet->nr_calls, !atomic_read(&rxnet->nr_calls));
 }
+
+/**
+ * rxrpc_kernel_query_call_security - Query call's security parameters
+ * @call: The call to query
+ * @_service_id: Where to return the service ID
+ * @_enctype: Where to return the "encoding type"
+ *
+ * This queries the security parameters of a call, setting *@_service_id and
+ * *@_enctype and returning the security class.
+ *
+ * Return: The security class protocol number.
+ */
+u8 rxrpc_kernel_query_call_security(struct rxrpc_call *call,
+                                   u16 *_service_id, u32 *_enctype)
+{
+       *_service_id = call->dest_srx.srx_service;
+       *_enctype = call->security_enctype;
+       return call->security_ix;
+}
+EXPORT_SYMBOL(rxrpc_kernel_query_call_security);
 
        if (ret < 0)
                return ret;
 
+       call->security_enctype = gk->krb5->etype;
        txb->cksum = htons(gk->key_number);
 
        switch (call->conn->security_level) {
                }
        }
 
+       call->security_enctype = gk->krb5->etype;
        switch (call->conn->security_level) {
        case RXRPC_SECURITY_PLAIN:
                return 0;