Lines Matching defs:vf

92 ixgbe_send_vf_msg(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
94 if (vf->flags & IXGBE_VF_CTS)
97 ixgbe_write_mbx(&adapter->hw, &msg, 1, vf->pool);
101 ixgbe_send_vf_ack(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
104 ixgbe_send_vf_msg(adapter, vf, msg | IXGBE_VT_MSGTYPE_ACK);
108 ixgbe_send_vf_nack(struct adapter *adapter, struct ixgbe_vf *vf, u32 msg)
111 ixgbe_send_vf_msg(adapter, vf, msg | IXGBE_VT_MSGTYPE_NACK);
115 ixgbe_process_vf_ack(struct adapter *adapter, struct ixgbe_vf *vf)
117 if (!(vf->flags & IXGBE_VF_CTS))
118 ixgbe_send_vf_nack(adapter, vf, 0);
122 ixgbe_vf_mac_changed(struct ixgbe_vf *vf, const uint8_t *mac)
124 return (bcmp(mac, vf->ether_addr, ETHER_ADDR_LEN) != 0);
202 struct ixgbe_vf *vf;
205 vf = &adapter->vfs[i];
206 if (vf->flags & IXGBE_VF_ACTIVE)
207 ixgbe_send_vf_msg(adapter, vf, IXGBE_PF_CONTROL_MSG);
213 ixgbe_vf_set_default_vlan(struct adapter *adapter, struct ixgbe_vf *vf,
221 vf->vlan_tag = tag;
223 vmolr = IXGBE_READ_REG(hw, IXGBE_VMOLR(vf->pool));
247 IXGBE_WRITE_REG(hw, IXGBE_VMOLR(vf->pool), vmolr);
248 IXGBE_WRITE_REG(hw, IXGBE_VMVIR(vf->pool), vmvir);
253 ixgbe_vf_frame_size_compatible(struct adapter *adapter, struct ixgbe_vf *vf)
264 switch (vf->api_ver) {
272 vf->max_frame_size > ETHER_MAX_LEN)
284 if (vf->max_frame_size <= ETHER_MAX_LEN)
301 ixgbe_process_vf_reset(struct adapter *adapter, struct ixgbe_vf *vf)
303 ixgbe_vf_set_default_vlan(adapter, vf, vf->default_vlan);
307 ixgbe_clear_rar(&adapter->hw, vf->rar_index);
309 vf->api_ver = IXGBE_API_VER_UNKNOWN;
314 ixgbe_vf_enable_transmit(struct adapter *adapter, struct ixgbe_vf *vf)
321 vf_index = IXGBE_VF_INDEX(vf->pool);
323 vfte |= IXGBE_VF_BIT(vf->pool);
329 ixgbe_vf_enable_receive(struct adapter *adapter, struct ixgbe_vf *vf)
336 vf_index = IXGBE_VF_INDEX(vf->pool);
338 if (ixgbe_vf_frame_size_compatible(adapter, vf))
339 vfre |= IXGBE_VF_BIT(vf->pool);
341 vfre &= ~IXGBE_VF_BIT(vf->pool);
347 ixgbe_vf_reset_msg(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
355 ixgbe_process_vf_reset(adapter, vf);
357 if (ixgbe_validate_mac_addr(vf->ether_addr) == 0) {
358 ixgbe_set_rar(&adapter->hw, vf->rar_index, vf->ether_addr,
359 vf->pool, TRUE);
364 ixgbe_vf_enable_transmit(adapter, vf);
365 ixgbe_vf_enable_receive(adapter, vf);
367 vf->flags |= IXGBE_VF_CTS;
370 bcopy(vf->ether_addr, &resp[1], ETHER_ADDR_LEN);
372 ixgbe_write_mbx(hw, resp, IXGBE_VF_PERMADDR_MSG_LEN, vf->pool);
377 ixgbe_vf_set_mac(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
384 if (!(vf->flags & IXGBE_VF_CAP_MAC) && ixgbe_vf_mac_changed(vf, mac)) {
385 ixgbe_send_vf_nack(adapter, vf, msg[0]);
390 ixgbe_send_vf_nack(adapter, vf, msg[0]);
394 bcopy(mac, vf->ether_addr, ETHER_ADDR_LEN);
396 ixgbe_set_rar(&adapter->hw, vf->rar_index, vf->ether_addr, vf->pool,
399 ixgbe_send_vf_ack(adapter, vf, msg[0]);
408 ixgbe_vf_set_mc_addr(struct adapter *adapter, struct ixgbe_vf *vf, u32 *msg)
417 vmolr = IXGBE_READ_REG(&adapter->hw, IXGBE_VMOLR(vf->pool));
419 vf->num_mc_hashes = entries;
423 vf->mc_hash[i] = list[i];
424 vec_reg = (vf->mc_hash[i] >> 5) & 0x7F;
425 vec_bit = vf->mc_hash[i] & 0x1F;
432 IXGBE_WRITE_REG(&adapter->hw, IXGBE_VMOLR(vf->pool), vmolr);
433 ixgbe_send_vf_ack(adapter, vf, msg[0]);
439 ixgbe_vf_set_vlan(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
449 if (!(vf->flags & IXGBE_VF_CAP_VLAN)) {
450 ixgbe_send_vf_nack(adapter, vf, msg[0]);
456 ixgbe_send_vf_nack(adapter, vf, msg[0]);
460 ixgbe_set_vfta(hw, tag, vf->pool, enable, false);
461 ixgbe_send_vf_ack(adapter, vf, msg[0]);
466 ixgbe_vf_set_lpe(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
476 ixgbe_send_vf_ack(adapter, vf, msg[0]);
484 ixgbe_send_vf_ack(adapter, vf, msg[0]);
488 vf->max_frame_size = vf_max_size;
489 ixgbe_update_max_frame(adapter, vf->max_frame_size);
495 ixgbe_vf_enable_receive(adapter, vf);
506 ixgbe_send_vf_ack(adapter, vf, msg[0]);
511 ixgbe_vf_set_macvlan(struct adapter *adapter, struct ixgbe_vf *vf,
515 ixgbe_send_vf_nack(adapter, vf, msg[0]);
520 ixgbe_vf_api_negotiate(struct adapter *adapter, struct ixgbe_vf *vf,
527 vf->api_ver = msg[1];
528 ixgbe_send_vf_ack(adapter, vf, msg[0]);
531 vf->api_ver = IXGBE_API_VER_UNKNOWN;
532 ixgbe_send_vf_nack(adapter, vf, msg[0]);
539 ixgbe_vf_get_queues(struct adapter *adapter, struct ixgbe_vf *vf, uint32_t *msg)
551 ixgbe_send_vf_nack(adapter, vf, msg[0]);
561 resp[IXGBE_VF_TRANS_VLAN] = (vf->default_vlan != 0);
564 ixgbe_write_mbx(hw, resp, IXGBE_VF_GET_QUEUES_RESP_LEN, vf->pool);
569 ixgbe_process_vf_msg(struct adapter *adapter, struct ixgbe_vf *vf)
577 error = ixgbe_read_mbx(hw, msg, IXGBE_VFMAILBOX_SIZE, vf->pool);
583 adapter->ifp->if_xname, msg[0], vf->pool);
585 ixgbe_vf_reset_msg(adapter, vf, msg);
589 if (!(vf->flags & IXGBE_VF_CTS)) {
590 ixgbe_send_vf_nack(adapter, vf, msg[0]);
596 ixgbe_vf_set_mac(adapter, vf, msg);
599 ixgbe_vf_set_mc_addr(adapter, vf, msg);
602 ixgbe_vf_set_vlan(adapter, vf, msg);
605 ixgbe_vf_set_lpe(adapter, vf, msg);
608 ixgbe_vf_set_macvlan(adapter, vf, msg);
611 ixgbe_vf_api_negotiate(adapter, vf, msg);
614 ixgbe_vf_get_queues(adapter, vf, msg);
617 ixgbe_send_vf_nack(adapter, vf, msg[0]);
628 struct ixgbe_vf *vf;
636 vf = &adapter->vfs[i];
638 if (vf->flags & IXGBE_VF_ACTIVE) {
639 if (ixgbe_check_for_rst(hw, vf->pool) == 0)
640 ixgbe_process_vf_reset(adapter, vf);
642 if (ixgbe_check_for_msg(hw, vf->pool) == 0)
643 ixgbe_process_vf_msg(adapter, vf);
645 if (ixgbe_check_for_ack(hw, vf->pool) == 0)
646 ixgbe_process_vf_ack(adapter, vf);
746 ixgbe_init_vf(struct adapter *adapter, struct ixgbe_vf *vf)
755 if (!(vf->flags & IXGBE_VF_ACTIVE))
758 vf_index = IXGBE_VF_INDEX(vf->pool);
760 pfmbimr |= IXGBE_VF_BIT(vf->pool);
763 ixgbe_vf_set_default_vlan(adapter, vf, vf->vlan_tag);
767 if (ixgbe_validate_mac_addr(vf->ether_addr) == 0) {
768 ixgbe_set_rar(&adapter->hw, vf->rar_index,
769 vf->ether_addr, vf->pool, TRUE);
772 ixgbe_vf_enable_transmit(adapter, vf);
773 ixgbe_vf_enable_receive(adapter, vf);
775 ixgbe_send_vf_msg(adapter, vf, IXGBE_PF_CONTROL_MSG);
844 struct ixgbe_vf *vf;
849 vf = &adapter->vfs[i];
850 if (vf->flags & IXGBE_VF_ACTIVE)
851 ixgbe_update_max_frame(adapter, vf->max_frame_size);
859 struct ixgbe_vf *vf;
868 vf = &adapter->vfs[vfnum];
869 vf->pool= vfnum;
872 vf->rar_index = vfnum + 1;
873 vf->default_vlan = 0;
874 vf->max_frame_size = ETHER_MAX_LEN;
875 ixgbe_update_max_frame(adapter, vf->max_frame_size);
879 bcopy(mac, vf->ether_addr, ETHER_ADDR_LEN);
881 vf->flags |= IXGBE_VF_CAP_MAC;
887 vf->flags |= IXGBE_VF_CAP_MAC;
889 vf->flags = IXGBE_VF_ACTIVE;
891 ixgbe_init_vf(adapter, vf);