140 * device operations
141 */
142 static int rt2560_attach(dev_info_t *, ddi_attach_cmd_t);
143 static int rt2560_detach(dev_info_t *, ddi_detach_cmd_t);
144 static int32_t rt2560_quiesce(dev_info_t *);
145
146 /*
147 * Module Loading Data & Entry Points
148 */
149 DDI_DEFINE_STREAM_OPS(ral_dev_ops, nulldev, nulldev, rt2560_attach,
150 rt2560_detach, nodev, NULL, D_MP, NULL, rt2560_quiesce);
151
152 static struct modldrv ral_modldrv = {
153 &mod_driverops, /* Type of module. This one is a driver */
154 "Ralink RT2500 driver v1.6", /* short description */
155 &ral_dev_ops /* driver specific ops */
156 };
157
158 static struct modlinkage modlinkage = {
159 MODREV_1,
160 (void *)&ral_modldrv,
161 NULL
162 };
163
164 static int rt2560_m_stat(void *, uint_t, uint64_t *);
165 static int rt2560_m_start(void *);
166 static void rt2560_m_stop(void *);
167 static int rt2560_m_promisc(void *, boolean_t);
168 static int rt2560_m_multicst(void *, boolean_t, const uint8_t *);
169 static int rt2560_m_unicst(void *, const uint8_t *);
170 static mblk_t *rt2560_m_tx(void *, mblk_t *);
171 static void rt2560_m_ioctl(void *, queue_t *, mblk_t *);
172 static int rt2560_m_setprop(void *, const char *, mac_prop_id_t,
173 uint_t, const void *);
174 static int rt2560_m_getprop(void *, const char *, mac_prop_id_t,
175 uint_t, void *);
176 static void rt2560_m_propinfo(void *, const char *, mac_prop_id_t,
177 mac_prop_info_handle_t);
178
179 static mac_callbacks_t rt2560_m_callbacks = {
180 MC_IOCTL | MC_SETPROP | MC_GETPROP | MC_PROPINFO,
181 rt2560_m_stat,
|
140 * device operations
141 */
142 static int rt2560_attach(dev_info_t *, ddi_attach_cmd_t);
143 static int rt2560_detach(dev_info_t *, ddi_detach_cmd_t);
144 static int32_t rt2560_quiesce(dev_info_t *);
145
146 /*
147 * Module Loading Data & Entry Points
148 */
149 DDI_DEFINE_STREAM_OPS(ral_dev_ops, nulldev, nulldev, rt2560_attach,
150 rt2560_detach, nodev, NULL, D_MP, NULL, rt2560_quiesce);
151
152 static struct modldrv ral_modldrv = {
153 &mod_driverops, /* Type of module. This one is a driver */
154 "Ralink RT2500 driver v1.6", /* short description */
155 &ral_dev_ops /* driver specific ops */
156 };
157
158 static struct modlinkage modlinkage = {
159 MODREV_1,
160 { (void *)&ral_modldrv, NULL }
161 };
162
163 static int rt2560_m_stat(void *, uint_t, uint64_t *);
164 static int rt2560_m_start(void *);
165 static void rt2560_m_stop(void *);
166 static int rt2560_m_promisc(void *, boolean_t);
167 static int rt2560_m_multicst(void *, boolean_t, const uint8_t *);
168 static int rt2560_m_unicst(void *, const uint8_t *);
169 static mblk_t *rt2560_m_tx(void *, mblk_t *);
170 static void rt2560_m_ioctl(void *, queue_t *, mblk_t *);
171 static int rt2560_m_setprop(void *, const char *, mac_prop_id_t,
172 uint_t, const void *);
173 static int rt2560_m_getprop(void *, const char *, mac_prop_id_t,
174 uint_t, void *);
175 static void rt2560_m_propinfo(void *, const char *, mac_prop_id_t,
176 mac_prop_info_handle_t);
177
178 static mac_callbacks_t rt2560_m_callbacks = {
179 MC_IOCTL | MC_SETPROP | MC_GETPROP | MC_PROPINFO,
180 rt2560_m_stat,
|