Lines Matching defs:gas

15 #include "common/gas.h"
55 struct gas_query *gas;
57 gas = os_zalloc(sizeof(*gas));
58 if (gas == NULL)
61 gas->wpa_s = wpa_s;
62 dl_list_init(&gas->pending);
64 return gas;
68 static void gas_query_done(struct gas_query *gas,
73 offchannel_send_action_done(gas->wpa_s);
74 eloop_cancel_timeout(gas_query_tx_comeback_timeout, gas, query);
75 eloop_cancel_timeout(gas_query_timeout, gas, query);
85 void gas_query_deinit(struct gas_query *gas)
89 if (gas == NULL)
92 dl_list_for_each_safe(query, next, &gas->pending,
94 gas_query_done(gas, query, GAS_QUERY_DELETED_AT_DEINIT);
96 os_free(gas);
101 gas_query_get_pending(struct gas_query *gas, const u8 *addr, u8 dialog_token)
104 dl_list_for_each(q, &gas->pending, struct gas_query_pending, list) {
125 static int gas_query_tx(struct gas_query *gas, struct gas_query_pending *query,
132 res = offchannel_send_action(gas->wpa_s, query->freq, query->addr,
133 gas->wpa_s->own_addr, query->addr,
142 static void gas_query_tx_comeback_req(struct gas_query *gas,
149 gas_query_done(gas, query, GAS_QUERY_INTERNAL_ERROR);
153 if (gas_query_tx(gas, query, req) < 0) {
156 gas_query_done(gas, query, GAS_QUERY_INTERNAL_ERROR);
165 struct gas_query *gas = eloop_data;
170 gas_query_tx_comeback_req(gas, query);
174 static void gas_query_tx_comeback_req_delay(struct gas_query *gas,
184 eloop_cancel_timeout(gas_query_tx_comeback_timeout, gas, query);
186 gas, query);
190 static void gas_query_rx_initial(struct gas_query *gas,
201 gas_query_done(gas, query, GAS_QUERY_INTERNAL_ERROR);
207 gas_query_tx_comeback_req_delay(gas, query, comeback_delay);
213 gas_query_done(gas, query, GAS_QUERY_INTERNAL_ERROR);
217 gas_query_done(gas, query, GAS_QUERY_SUCCESS);
221 static void gas_query_rx_comeback(struct gas_query *gas,
239 gas_query_done(gas, query, GAS_QUERY_PEER_ERROR);
248 gas_query_done(gas, query, GAS_QUERY_PEER_ERROR);
251 gas_query_tx_comeback_req_delay(gas, query, comeback_delay);
258 gas_query_done(gas, query, GAS_QUERY_PEER_ERROR);
264 gas_query_done(gas, query, GAS_QUERY_INTERNAL_ERROR);
269 gas_query_tx_comeback_req(gas, query);
273 gas_query_done(gas, query, GAS_QUERY_SUCCESS);
277 int gas_query_rx(struct gas_query *gas, const u8 *da, const u8 *sa,
285 if (gas == NULL || len < 4)
296 query = gas_query_get_pending(gas, sa, dialog_token);
324 gas_query_done(gas, query, GAS_QUERY_FAILURE);
382 gas_query_rx_comeback(gas, query, adv_proto, pos, resp_len,
385 gas_query_rx_initial(gas, query, adv_proto, pos, resp_len,
394 struct gas_query *gas = eloop_data;
399 gas_query_done(gas, query, GAS_QUERY_TIMEOUT);
403 static int gas_query_dialog_token_available(struct gas_query *gas,
407 dl_list_for_each(q, &gas->pending, struct gas_query_pending, list) {
417 int gas_query_req(struct gas_query *gas, const u8 *dst, int freq,
432 if (gas_query_dialog_token_available(gas, dst, dialog_token))
447 dl_list_add(&gas->pending, &query->list);
453 if (gas_query_tx(gas, query, req) < 0) {
461 gas, query);
467 void gas_query_cancel(struct gas_query *gas, const u8 *dst, u8 dialog_token)
471 query = gas_query_get_pending(gas, dst, dialog_token);
473 gas_query_done(gas, query, GAS_QUERY_CANCELLED);