127 static void gem_mii_start(struct gem_dev *);
128 static void gem_mii_stop(struct gem_dev *);
129
130 /* local buffer management */
131 static void gem_nd_setup(struct gem_dev *dp);
132 static void gem_nd_cleanup(struct gem_dev *dp);
133 static int gem_alloc_memory(struct gem_dev *);
134 static void gem_free_memory(struct gem_dev *);
135 static void gem_init_rx_ring(struct gem_dev *);
136 static void gem_init_tx_ring(struct gem_dev *);
137 __INLINE__ static void gem_append_rxbuf(struct gem_dev *, struct rxbuf *);
138
139 static void gem_tx_timeout(struct gem_dev *);
140 static void gem_mii_link_watcher(struct gem_dev *dp);
141 static int gem_mac_init(struct gem_dev *dp);
142 static int gem_mac_start(struct gem_dev *dp);
143 static int gem_mac_stop(struct gem_dev *dp, uint_t flags);
144 static void gem_mac_ioctl(struct gem_dev *dp, queue_t *wq, mblk_t *mp);
145
146 static struct ether_addr gem_etherbroadcastaddr = {
147 0xff, 0xff, 0xff, 0xff, 0xff, 0xff
148 };
149
150 int gem_speed_value[] = {10, 100, 1000};
151
152 /* ============================================================== */
153 /*
154 * Misc runtime routines
155 */
156 /* ============================================================== */
157 /*
158 * Ether CRC calculation according to 21143 data sheet
159 */
160 uint32_t
161 gem_ether_crc_le(const uint8_t *addr, int len)
162 {
163 uint32_t crc;
164
165 CRC32(crc, addr, ETHERADDRL, 0xffffffffU, crc32_table);
166 return (crc);
167 }
|
127 static void gem_mii_start(struct gem_dev *);
128 static void gem_mii_stop(struct gem_dev *);
129
130 /* local buffer management */
131 static void gem_nd_setup(struct gem_dev *dp);
132 static void gem_nd_cleanup(struct gem_dev *dp);
133 static int gem_alloc_memory(struct gem_dev *);
134 static void gem_free_memory(struct gem_dev *);
135 static void gem_init_rx_ring(struct gem_dev *);
136 static void gem_init_tx_ring(struct gem_dev *);
137 __INLINE__ static void gem_append_rxbuf(struct gem_dev *, struct rxbuf *);
138
139 static void gem_tx_timeout(struct gem_dev *);
140 static void gem_mii_link_watcher(struct gem_dev *dp);
141 static int gem_mac_init(struct gem_dev *dp);
142 static int gem_mac_start(struct gem_dev *dp);
143 static int gem_mac_stop(struct gem_dev *dp, uint_t flags);
144 static void gem_mac_ioctl(struct gem_dev *dp, queue_t *wq, mblk_t *mp);
145
146 static struct ether_addr gem_etherbroadcastaddr = {
147 { 0xff, 0xff, 0xff, 0xff, 0xff, 0xff }
148 };
149
150 int gem_speed_value[] = {10, 100, 1000};
151
152 /* ============================================================== */
153 /*
154 * Misc runtime routines
155 */
156 /* ============================================================== */
157 /*
158 * Ether CRC calculation according to 21143 data sheet
159 */
160 uint32_t
161 gem_ether_crc_le(const uint8_t *addr, int len)
162 {
163 uint32_t crc;
164
165 CRC32(crc, addr, ETHERADDRL, 0xffffffffU, crc32_table);
166 return (crc);
167 }
|