X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2Flibrte_pmd_virtio%2Fvirtio_pci.c;h=2245becad95042f1be60394d77874aed514b6443;hb=4bb4414040ffdc9f2676f22b540b8c77d2ba00fc;hp=a462779e8618df31b79c83c4156b0bf7b629784c;hpb=c1f86306a0261f50c503a73fea40293e2b2b724c;p=dpdk.git diff --git a/lib/librte_pmd_virtio/virtio_pci.c b/lib/librte_pmd_virtio/virtio_pci.c index a462779e86..2245becad9 100644 --- a/lib/librte_pmd_virtio/virtio_pci.c +++ b/lib/librte_pmd_virtio/virtio_pci.c @@ -1,13 +1,13 @@ /*- * BSD LICENSE - * - * Copyright(c) 2010-2013 Intel Corporation. All rights reserved. + * + * Copyright(c) 2010-2014 Intel Corporation. All rights reserved. * All rights reserved. - * + * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: - * + * * * Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * Redistributions in binary form must reproduce the above copyright @@ -17,7 +17,7 @@ * * Neither the name of Intel Corporation nor the names of its * contributors may be used to endorse or promote products derived * from this software without specific prior written permission. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR @@ -35,6 +35,8 @@ #include "virtio_pci.h" #include "virtio_logs.h" +static uint8_t vtpci_get_status(struct virtio_hw *); + void vtpci_read_dev_config(struct virtio_hw *hw, uint64_t offset, void *dst, int length) @@ -81,18 +83,18 @@ vtpci_write_dev_config(struct virtio_hw *hw, uint64_t offset, } } -uint64_t -vtpci_negotiate_features(struct virtio_hw *hw, uint64_t guest_features) +uint32_t +vtpci_negotiate_features(struct virtio_hw *hw, uint32_t host_features) { uint32_t features; /* * Limit negotiated features to what the driver, virtqueue, and * host all support. */ - features = (hw->host_features) & guest_features; + features = host_features & hw->guest_features; VIRTIO_WRITE_REG_4(hw, VIRTIO_PCI_GUEST_FEATURES, features); - return (features); + return features; } @@ -113,10 +115,10 @@ vtpci_reinit_complete(struct virtio_hw *hw) vtpci_set_status(hw, VIRTIO_CONFIG_STATUS_DRIVER_OK); } -uint8_t +static uint8_t vtpci_get_status(struct virtio_hw *hw) { - return (VIRTIO_READ_REG_1(hw, VIRTIO_PCI_STATUS)); + return VIRTIO_READ_REG_1(hw, VIRTIO_PCI_STATUS); } void @@ -127,3 +129,19 @@ vtpci_set_status(struct virtio_hw *hw, uint8_t status) VIRTIO_WRITE_REG_1(hw, VIRTIO_PCI_STATUS, status); } + +uint8_t +vtpci_isr(struct virtio_hw *hw) +{ + + return VIRTIO_READ_REG_1(hw, VIRTIO_PCI_ISR); +} + + +/* Enable one vector (0) for Link State Intrerrupt */ +uint16_t +vtpci_irq_config(struct virtio_hw *hw, uint16_t vec) +{ + VIRTIO_WRITE_REG_2(hw, VIRTIO_MSI_CONFIG_VECTOR, vec); + return VIRTIO_READ_REG_2(hw, VIRTIO_MSI_CONFIG_VECTOR); +}