Changes in uspace/lib/nic/include/nic.h [00d7e1b:77ad86c] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/nic/include/nic.h
r00d7e1b r77ad86c 42 42 #include <ddf/driver.h> 43 43 #include <device/hw_res_parsed.h> 44 #include <net/packet.h>45 44 #include <ops/nic.h> 45 46 #define DEVICE_CATEGORY_NIC "nic" 46 47 47 48 struct nic; … … 61 62 62 63 /** 63 * Simple structure for sending the allocated frames (packets) in a list.64 * Simple structure for sending lists of frames. 64 65 */ 65 66 typedef struct { 66 67 link_t link; 67 packet_t *packet; 68 void *data; 69 size_t size; 68 70 } nic_frame_t; 69 71 … … 71 73 72 74 /** 73 * Handler for writing packetdata to the NIC device.74 * The function is responsible for releasing the packet.75 * Handler for writing frame data to the NIC device. 76 * The function is responsible for releasing the frame. 75 77 * It does not return anything, if some error is detected the function just 76 78 * silently fails (logging on debug level is suggested). 77 79 * 78 80 * @param nic_data 79 * @param packet Pointer to the packet to be sent 80 */ 81 typedef void (*write_packet_handler)(nic_t *, packet_t *); 81 * @param data Pointer to frame data 82 * @param size Size of frame data in bytes 83 */ 84 typedef void (*send_frame_handler)(nic_t *, void *, size_t); 85 82 86 /** 83 87 * The handler for transitions between driver states. … … 91 95 */ 92 96 typedef int (*state_change_handler)(nic_t *); 97 93 98 /** 94 99 * Handler for unicast filtering mode change. … … 103 108 */ 104 109 typedef int (*unicast_mode_change_handler)(nic_t *, 105 nic_unicast_mode_t, const nic_address_t *, size_t); 110 nic_unicast_mode_t, const nic_address_t *, size_t); 111 106 112 /** 107 113 * Handler for multicast filtering mode change. … … 116 122 */ 117 123 typedef int (*multicast_mode_change_handler)(nic_t *, 118 nic_multicast_mode_t, const nic_address_t *, size_t); 124 nic_multicast_mode_t, const nic_address_t *, size_t); 125 119 126 /** 120 127 * Handler for broadcast filtering mode change. … … 127 134 */ 128 135 typedef int (*broadcast_mode_change_handler)(nic_t *, nic_broadcast_mode_t); 136 129 137 /** 130 138 * Handler for blocked sources list change. … … 135 143 */ 136 144 typedef void (*blocked_sources_change_handler)(nic_t *, 137 const nic_address_t *, size_t); 145 const nic_address_t *, size_t); 146 138 147 /** 139 148 * Handler for VLAN filtering mask change. … … 142 151 */ 143 152 typedef void (*vlan_mask_change_handler)(nic_t *, const nic_vlan_mask_t *); 153 144 154 /** 145 155 * Handler called when a WOL virtue is added. … … 157 167 * @return ENOTSUP If this filter cannot work on this NIC (e.g. the NIC 158 168 * cannot run in promiscuous node or the limit of WOL 159 * packets' specifications was reached).169 * frames' specifications was reached). 160 170 * @return ELIMIT If this filter must implemented in HW but currently the 161 171 * limit of these HW filters was reached. 162 172 */ 163 173 typedef int (*wol_virtue_add_handler)(nic_t *, const nic_wol_virtue_t *); 174 164 175 /** 165 176 * Handler called when a WOL virtue is removed. … … 171 182 */ 172 183 typedef void (*wol_virtue_remove_handler)(nic_t *, const nic_wol_virtue_t *); 184 173 185 /** 174 186 * Handler for poll mode change. … … 183 195 */ 184 196 typedef int (*poll_mode_change_handler)(nic_t *, 185 nic_poll_mode_t, const struct timeval *); 197 nic_poll_mode_t, const struct timeval *); 198 186 199 /** 187 200 * Event handler called when the NIC should poll its buffers for a new frame … … 199 212 extern int nic_driver_init(const char *); 200 213 extern void nic_driver_implement(driver_ops_t *, ddf_dev_ops_t *, 201 214 nic_iface_t *); 202 215 203 216 /* Functions called in add_device */ 204 217 extern int nic_connect_to_services(nic_t *); 205 extern int nic_register_as_ddf_fun(nic_t *, ddf_dev_ops_t *);206 218 extern int nic_get_resources(nic_t *, hw_res_list_parsed_t *); 207 219 extern void nic_set_specific(nic_t *, void *); 208 extern void nic_set_ write_packet_handler(nic_t *, write_packet_handler);220 extern void nic_set_send_frame_handler(nic_t *, send_frame_handler); 209 221 extern void nic_set_state_change_handlers(nic_t *, 210 222 state_change_handler, state_change_handler, state_change_handler); 211 223 extern void nic_set_filtering_change_handlers(nic_t *, 212 213 214 224 unicast_mode_change_handler, multicast_mode_change_handler, 225 broadcast_mode_change_handler, blocked_sources_change_handler, 226 vlan_mask_change_handler); 215 227 extern void nic_set_wol_virtue_change_handlers(nic_t *, 216 228 wol_virtue_add_handler, wol_virtue_remove_handler); 217 229 extern void nic_set_poll_handlers(nic_t *, 218 poll_mode_change_handler, poll_request_handler); 219 220 /* Functions called in device_added */ 221 extern int nic_ready(nic_t *); 230 poll_mode_change_handler, poll_request_handler); 222 231 223 232 /* General driver functions */ 224 233 extern ddf_dev_t *nic_get_ddf_dev(nic_t *); 225 234 extern ddf_fun_t *nic_get_ddf_fun(nic_t *); 235 extern void nic_set_ddf_fun(nic_t *, ddf_fun_t *); 226 236 extern nic_t *nic_get_from_ddf_dev(ddf_dev_t *); 227 237 extern nic_t *nic_get_from_ddf_fun(ddf_fun_t *); … … 232 242 extern int nic_report_poll_mode(nic_t *, nic_poll_mode_t, struct timeval *); 233 243 extern void nic_query_address(nic_t *, nic_address_t *); 234 extern void nic_received_packet(nic_t *, packet_t *);235 extern void nic_received_noneth_packet(nic_t *, packet_t *);236 244 extern void nic_received_frame(nic_t *, nic_frame_t *); 237 245 extern void nic_received_frame_list(nic_t *, nic_frame_list_t *); … … 247 255 extern void nic_report_collisions(nic_t *, unsigned); 248 256 249 /* Packet / frame / frame list allocation and deallocation */ 250 extern packet_t *nic_alloc_packet(nic_t *, size_t); 251 extern void nic_release_packet(nic_t *, packet_t *); 257 /* Frame / frame list allocation and deallocation */ 252 258 extern nic_frame_t *nic_alloc_frame(nic_t *, size_t); 253 259 extern nic_frame_list_t *nic_alloc_frame_list(void); … … 258 264 extern void nic_report_hw_filtering(nic_t *, int, int, int); 259 265 extern void nic_query_unicast(const nic_t *, 260 266 nic_unicast_mode_t *, size_t, nic_address_t *, size_t *); 261 267 extern void nic_query_multicast(const nic_t *, 262 268 nic_multicast_mode_t *, size_t, nic_address_t *, size_t *); 263 269 extern void nic_query_broadcast(const nic_t *, nic_broadcast_mode_t *); 264 270 extern void nic_query_blocked_sources(const nic_t *, 265 271 size_t, nic_address_t *, size_t *); 266 272 extern int nic_query_vlan_mask(const nic_t *, nic_vlan_mask_t *); 267 273 extern int nic_query_wol_max_caps(const nic_t *, nic_wv_type_t); … … 274 280 extern void nic_sw_period_stop(nic_t *); 275 281 276 /* Packet DMA lock */277 extern void * nic_dma_lock_packet(packet_t * packet);278 extern void nic_dma_unlock_packet(packet_t * packet);279 280 282 #endif // __NIC_H__ 281 283
Note:
See TracChangeset
for help on using the changeset viewer.