packet.hh (11057:ccdaf2f353ba) packet.hh (11127:f39c2cc0d44e)
1/*
2 * Copyright (c) 2012-2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 310 unchanged lines hidden (view full) ---

319 * transmitted. This delay is used to communicate the crossbar
320 * forwarding latency to the neighbouring object (e.g. a cache)
321 * that actually makes the packet wait. As the delay is relative,
322 * a 32-bit unsigned should be sufficient.
323 */
324 uint32_t headerDelay;
325
326 /**
1/*
2 * Copyright (c) 2012-2015 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 310 unchanged lines hidden (view full) ---

319 * transmitted. This delay is used to communicate the crossbar
320 * forwarding latency to the neighbouring object (e.g. a cache)
321 * that actually makes the packet wait. As the delay is relative,
322 * a 32-bit unsigned should be sufficient.
323 */
324 uint32_t headerDelay;
325
326 /**
327 * Keep track of the extra delay incurred by snooping upwards
328 * before sending a request down the memory system. This is used
329 * by the coherent crossbar to account for the additional request
330 * delay.
331 */
332 uint32_t snoopDelay;
333
334 /**
327 * The extra pipelining delay from seeing the packet until the end of
328 * payload is transmitted by the component that provided it (if
329 * any). This includes the header delay. Similar to the header
330 * delay, this is used to make up for the fact that the
331 * crossbar does not make the packet wait. As the delay is
332 * relative, a 32-bit unsigned should be sufficient.
333 */
334 uint32_t payloadDelay;

--- 242 unchanged lines hidden (view full) ---

577
578 /**
579 * Constructor. Note that a Request object must be constructed
580 * first, but the Requests's physical address and size fields need
581 * not be valid. The command must be supplied.
582 */
583 Packet(const RequestPtr _req, MemCmd _cmd)
584 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
335 * The extra pipelining delay from seeing the packet until the end of
336 * payload is transmitted by the component that provided it (if
337 * any). This includes the header delay. Similar to the header
338 * delay, this is used to make up for the fact that the
339 * crossbar does not make the packet wait. As the delay is
340 * relative, a 32-bit unsigned should be sufficient.
341 */
342 uint32_t payloadDelay;

--- 242 unchanged lines hidden (view full) ---

585
586 /**
587 * Constructor. Note that a Request object must be constructed
588 * first, but the Requests's physical address and size fields need
589 * not be valid. The command must be supplied.
590 */
591 Packet(const RequestPtr _req, MemCmd _cmd)
592 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
585 size(0), headerDelay(0), payloadDelay(0),
593 size(0), headerDelay(0), snoopDelay(0), payloadDelay(0),
586 senderState(NULL)
587 {
588 if (req->hasPaddr()) {
589 addr = req->getPaddr();
590 flags.set(VALID_ADDR);
591 _isSecure = req->isSecure();
592 }
593 if (req->hasSize()) {

--- 4 unchanged lines hidden (view full) ---

598
599 /**
600 * Alternate constructor if you are trying to create a packet with
601 * a request that is for a whole block, not the address from the
602 * req. this allows for overriding the size/addr of the req.
603 */
604 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize)
605 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
594 senderState(NULL)
595 {
596 if (req->hasPaddr()) {
597 addr = req->getPaddr();
598 flags.set(VALID_ADDR);
599 _isSecure = req->isSecure();
600 }
601 if (req->hasSize()) {

--- 4 unchanged lines hidden (view full) ---

606
607 /**
608 * Alternate constructor if you are trying to create a packet with
609 * a request that is for a whole block, not the address from the
610 * req. this allows for overriding the size/addr of the req.
611 */
612 Packet(const RequestPtr _req, MemCmd _cmd, int _blkSize)
613 : cmd(_cmd), req(_req), data(nullptr), addr(0), _isSecure(false),
606 headerDelay(0), payloadDelay(0),
614 headerDelay(0), snoopDelay(0), payloadDelay(0),
607 senderState(NULL)
608 {
609 if (req->hasPaddr()) {
610 addr = req->getPaddr() & ~(_blkSize - 1);
611 flags.set(VALID_ADDR);
612 _isSecure = req->isSecure();
613 }
614 size = _blkSize;

--- 8 unchanged lines hidden (view full) ---

623 * packet should allocate its own data.
624 */
625 Packet(const PacketPtr pkt, bool clear_flags, bool alloc_data)
626 : cmd(pkt->cmd), req(pkt->req),
627 data(nullptr),
628 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size),
629 bytesValid(pkt->bytesValid),
630 headerDelay(pkt->headerDelay),
615 senderState(NULL)
616 {
617 if (req->hasPaddr()) {
618 addr = req->getPaddr() & ~(_blkSize - 1);
619 flags.set(VALID_ADDR);
620 _isSecure = req->isSecure();
621 }
622 size = _blkSize;

--- 8 unchanged lines hidden (view full) ---

631 * packet should allocate its own data.
632 */
633 Packet(const PacketPtr pkt, bool clear_flags, bool alloc_data)
634 : cmd(pkt->cmd), req(pkt->req),
635 data(nullptr),
636 addr(pkt->addr), _isSecure(pkt->_isSecure), size(pkt->size),
637 bytesValid(pkt->bytesValid),
638 headerDelay(pkt->headerDelay),
639 snoopDelay(0),
631 payloadDelay(pkt->payloadDelay),
632 senderState(pkt->senderState)
633 {
634 if (!clear_flags)
635 flags.set(pkt->flags & COPY_FLAGS);
636
637 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE));
638

--- 427 unchanged lines hidden ---
640 payloadDelay(pkt->payloadDelay),
641 senderState(pkt->senderState)
642 {
643 if (!clear_flags)
644 flags.set(pkt->flags & COPY_FLAGS);
645
646 flags.set(pkt->flags & (VALID_ADDR|VALID_SIZE));
647

--- 427 unchanged lines hidden ---