{"id":20912249,"url":"https://github.com/ansuel/aqr_prov_table_parser","last_synced_at":"2025-09-13T15:15:15.824Z","repository":{"id":222912703,"uuid":"758710286","full_name":"Ansuel/aqr_prov_table_parser","owner":"Ansuel","description":"Aquantia Provision Table Parser Tool","archived":false,"fork":false,"pushed_at":"2024-05-13T20:58:12.000Z","size":33,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-12T22:29:36.990Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Ansuel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-16T22:28:28.000Z","updated_at":"2024-05-13T20:58:15.000Z","dependencies_parsed_at":"2024-02-19T01:23:53.506Z","dependency_job_id":null,"html_url":"https://github.com/Ansuel/aqr_prov_table_parser","commit_stats":null,"previous_names":["ansuel/aqr_prov_table_parser"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Ansuel/aqr_prov_table_parser","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ansuel%2Faqr_prov_table_parser","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ansuel%2Faqr_prov_table_parser/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ansuel%2Faqr_prov_table_parser/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ansuel%2Faqr_prov_table_parser/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ansuel","download_url":"https://codeload.github.com/Ansuel/aqr_prov_table_parser/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ansuel%2Faqr_prov_table_parser/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274982435,"owners_count":25385328,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-13T02:00:10.085Z","response_time":70,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-18T14:26:11.688Z","updated_at":"2025-09-13T15:15:15.781Z","avatar_url":"https://github.com/Ansuel.png","language":"Python","readme":"# AQR Provision Table Parser\n\nThis script, `aqr_prov_table_parser.py`, is a Python script designed to parse and extract information from an AQR provision table.\n\n## Usage\n\nThe script can be run directly from the command line as follows:\n\n```bash\nusage: aqr_prov_table_parser.py [-h] [--json] fw\n\nAQR Provision Table parser\n\npositional arguments:\n  fw          path to AQR Firmware\n\noptions:\n  -h, --help  show this help message and exit\n  --json      Output parsed values in JSON format\n```\n\n## AQR Provision Table Format\n\nThe AQR provision table has a specific format. Here's a breakdown of its structure:\n\n- **Section Start**: Each section always starts with `0x3` followed by a priority ID.\n  The Values after the section header (0x3) are still a bit confusing.\n\n  Bits 7:5 are used for padding length, always a multiple of 2\n  and should be multiply by 2.\n\n  Rest is assumed to be priority or something related but it was notice that Bit 3 ALWAYS result in\n  the value with the last bit set to zero (Example 0xffff -\u003e 0x7fff)\n- **Subsection**: Each section contains a contiguous subsection with a register header and a number of values to write in the format `reg val mask`.\n- **Regs Header**: The regs header is followed by the length of the subsection.\n  \n  BIT(7) is set, the length is incremented by 1.\n  \n  GENMASK(6, 2) represents the MMD reg.\n\n  Data Length must always be multiplied by 2 (and eventually incremented)\n- **Reg Value and Mask**: The reg value and mask are all in big endian.\n\nHere's an example of the AQR provision table format:\n\n```\n03 01 78 01 20 00 05 04 FF FF 85 C8 40 00 F0 00\n/\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\ /\\\n|| || || || || || || || || || || || || || || ||\n|| || || || || || || || Mask  || || || || Mask\n|| || || || || || Value       || || Value\n|| || || || Address            Address\n|| || || Data length (to increment if BIT 7 set and * 2)\n|| || Reg Header (Length Increment, MMD reg)\n|| Section priority (padding length + priority)\nSection header\n```\n## Confusion and Investigation on Priority Section\n\nIt looks like Bugged section werent' actually bugged but a very strange\nformat that wasn't clear from the start.\n\nIt seems the Priority Section is not actually only Priority but much worse.\n\nIt really seems to contain all sort of bits that declares property of the\nsubsections.\n\nFor example the last 3 bits declare the padding length of each subsection.\nMax padding length value is 8 and the logic is 7:5 value * 2.\nAccepted padding lenght is always a multiple of 2 hence the possible padding\nare 2, 4, 6 and 8.\n\nThe example format it was notice is the following:\n 03 41 01 01 01 01 F8 01 8D C0 20 00 20 00\n - 0x03 section header\n - 0x41 BIT 6 = padding 2 * 2 = 4\n - 0x01 0x01 0x01 0x01 padding of 4\n - 0xf8 reg header\n - 0x01 data length\n ...\n\nOn top of this with further research I notice the first bits\ncould also have different meaning than priority.\n\nBIT 1 seems to always trigger a write\nBIT 3 seems to always zero the last bit (0xffff -\u003e 0x7fff)\n\nAnyone having any clue of this would be very helpful to better understand and\noarse the section.\n\n## Contributing\n\nContributions are welcome. Please submit a pull request with any enhancements.\n\n## License\n\nThis project is licensed under the terms of the MIT license.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansuel%2Faqr_prov_table_parser","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fansuel%2Faqr_prov_table_parser","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fansuel%2Faqr_prov_table_parser/lists"}