1 /* SPDX-License-Identifier: GPL-2.0-or-later */ 2 /* 3 * Driver for Alibaba Elastic Ethernet Adapter. 4 * 5 * Copyright (C) 2025 Alibaba Inc. 6 */ 7 8 #ifndef __EEA_ADMINQ_H__ 9 #define __EEA_ADMINQ_H__ 10 11 struct eea_aq_cfg { 12 __le32 rx_depth_max; 13 __le32 rx_depth_def; 14 15 __le32 tx_depth_max; 16 __le32 tx_depth_def; 17 18 __le32 max_tso_size; 19 __le32 max_tso_segs; 20 21 u8 mac[ETH_ALEN]; 22 __le16 status; 23 24 __le16 mtu; 25 __le16 reserved0; 26 __le16 reserved1; 27 u8 reserved2; 28 u8 reserved3; 29 30 __le16 reserved4; 31 __le16 reserved5; 32 __le16 reserved6; 33 }; 34 35 struct eea_aq_queue_status { 36 __le16 qidx; 37 #define EEA_QUEUE_STATUS_OK 0 38 #define EEA_QUEUE_STATUS_NEED_RESET 1 39 __le16 status; 40 }; 41 42 struct __eea_aq_dev_status { 43 #define EEA_LINK_DOWN_STATUS 0 44 #define EEA_LINK_UP_STATUS 1 45 __le16 link_status; 46 __le16 reserved; 47 48 struct eea_aq_queue_status q_status[]; 49 }; 50 51 struct eea_aq_dev_status { 52 u32 num; 53 struct __eea_aq_dev_status *status; 54 }; 55 56 struct eea_aq { 57 struct eea_ring *ring; 58 u32 num; 59 bool broken; 60 u16 phase; 61 62 /* lock for adminq exec */ 63 struct mutex lock; 64 65 u32 q_req_size; 66 u32 q_res_size; 67 struct eea_aq_create *q_req_buf; 68 __le32 *q_res_buf; 69 }; 70 71 struct eea_net; 72 73 int eea_create_adminq(struct eea_net *enet, u32 qid); 74 void eea_destroy_adminq(struct eea_net *enet); 75 76 int eea_adminq_query_cfg(struct eea_net *enet, struct eea_aq_cfg *cfg); 77 78 int eea_adminq_create_q(struct eea_net *enet, u32 num, u32 flags); 79 int eea_adminq_destroy_all_q(struct eea_net *enet); 80 int eea_adminq_dev_status(struct eea_net *enet, 81 struct eea_aq_dev_status *dstatus); 82 void eea_adminq_config_host_info(struct eea_net *enet); 83 #endif 84